리팩터링 2판

리팩토링 개정판

코드 구조를 체계적으로 개선하여 효율적인 리팩터링 구현하기


책 정보

출판사 : 한빛미디어
저자 : 개앞맵시(이복연)
역자 : 남기혁
출간 : 2020-04-01
페이지 : 550
ISBN : 9791162242742
가격 : 35,000원

소개

2018년 마틴 파울러옹의 아티클을 보고 드디어!! 리팩터링이 출간되는구나 흥분을 감출 수 없었다.

이번 2판은 Java => JavaScript로 변경되어 작성되었다는 소식이 언급되어 있기 때문에 프론트엔드 엔지니어로써 더 많은 기대가 되었기 때문이다.
(역시 발빠른 한빛미디어에서 번역본을 출간해줬고 어찌 또 운좋게 책을 증정받아 무료로 읽어볼 수 있었다.)

리팩터링 1판이 20년이 넘은 지금도 훌륭한 책으로 불리며 Java 진영에서는 필독서로 손 꼽히니 읽기 시작할때도 흥분을 감출 수 없었다.

리팩터링이란

저자는 리팩터링에 대한 정의를 명사와 동사로 나누어 구체적으로 묘사한다.
이는 클린 코드와는 다른 느낌인게 클린 코드 저자 엉클 밥은 클린 코드에 대한 정의를 수 많은 개발자들이 서로 다르게 생각할 수 있다고 설명한다.

아무튼 마틴 파울러는 리팩터링을 구체적으로 설명한다.

명사

  • 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법

    동사

  • 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용해 소프트웨어를 재구성한다.

추가로 켄트 벡이 비유한 두 개의 모자도 재미있는 비유다.
(마틴 파울러는 두 모자를 자주 바꿔 쓴다고 한다.)

기능 추가 모자

  • 기능을 추가할 때는 기능 추가 모자를 쓰고 기존 코드는 절대 건드리지 않고 새 기능을 추가하기만 한다. 진척도는 테스트를 추가해서 통과하는지 확인하는 방식으로 측정한다.

리팩터링 모자

  • 기능 추가는 절대 하지 않기로 다짐한 뒤 오로지 코드 재구성에만 전념한다. 테스트도 새로 만들지 않는다. 부득이 인터페이스를 변경해야 할 때만 기존 테스트를 수정한다.

끝으로 돈 로버츠의 가이드 3의 법칙 즉 삼진 리팩터링도 흥미롭다.

결국은 책 곳곳에 테스트 코드 없이 리팩터링하는 것은 리팩터링이 아니다라는 내용이 계속 따라온다.

Chapter 1 ~ 2

아쉽고 또 아쉽다 ㅠㅠ
기대가 많았던 책인데 남는건 1장~3장 아닐까?라는 생각일정도로 4장부터는 개인적으로 실망에 가까웠다.

Chapter 1 (1장)

최고의 챕터다.
1장의 코드는 굉장히 길고 흐름을 따라가기 어렵지만 이 책에서 비중을 40%는 차지하는게 아닐까 싶다.
리팩터링하는 과정조차 흥미로우니 시간없으신 분들은 1장만봐도 충분하다는 생각이 들 정도로 흥미로웠다.

Chapter 2 (2장)

리팩터링 원칙이 무수히 쏟아진다.
프로그래밍의 이론과 역사를 공부하는 느낌이라 재미있는데 리팩터링에 대한 다양한 시각과 시선 그리고 원칙이 개발자로써 내가 얼마나 무책임한 개발자였던가 깨우치게 해줬다.

리팩터링이란 핑계와 변명으로 무장했던 나 그리고 여태까지 해왔던 리팩터링이 리팩터링이 아닌데 착각했던 나를 되돌아 볼 수 있었다.

실망

3장부터는 실망이 가득하게 들었다.
출간 전부터 기대가 컸고 1장부터 3장까지는 흥미진진하고 재미있었다.

하지만 4장부터.. 지치기 시작했다.
그 이유는 여러가지가 있겠지만 몇가지가 생각난다.

  • 억지로 짜낸 것만 같은 무수히 많은 리팩터링 기법들
  • 리팩터링 기법에 사용되는 예시 코드 재활용
  • 리팩터링 카탈로그부터는 완전히 다른 책
  • JavaScript를 다룰 것이라는 큰 기대
  • Java 로직이 나타나며 흐름이 또 한번 끊김

결론

기대가 너무 커서 그랬을뿐이지 그래도 좋은 책이다.
한땀 한땀 코드를 열심히 작성해서 저장소를 관리하기도 했고 여러번 읽기도 했다.

2020년에 자바 카페 커뮤니티분들과 거의 4개월 이상 진행했고
2021년에는 재남님의 스터디에 우테코 크루들과 함께 참여해서 읽어볼 수 있었다.

아마…. 혼자 읽었다면 금방 포기했을 법한 책이다.

그래도 챕터 1~3은 최고다. 베스트 중의 베스트라 시간될때 다시 한번 읽어봐야겠다.

(작년에 읽은 책인데 이제서야.. 후기를 쓰다니 역시 글또덕분 👍)

Share Comments