본문 바로가기
[Review]/Book

[도서 리뷰] 리팩터링 2판

by 해피빈이 2020. 4. 30.

> 진행에 앞서

이 책은 개발자된 지 얼마 되지 않았을 무렵, 책을 좋아하던 지라 이런저런 책을 다양하게 접하던 시절에 1판을 읽었던 기억이 있다. 그 당시에는 리팩터링의 개념을 제대로 알지도 못했을 뿐 아니라, 그 책을 읽어도 이것을 할 일이 있을까 싶은 생각에 크게 와 닿지는 못했지만, 그래도 개발의 실재적인 측면에서 다룬 책이었기에 꽤나 관심이 있었던 책이었다. 그러던 중 올해 들어 베타리딩이라는 것을 통해 리팩터링2판 출시에 대해 접하게 되었고, 세부적인 내용에 대해서 교정할 기회가 있었다. 그리고 그 이후 이 책이 출간되었고, 다행히 출간된 이후 한빛미디어에서 제공하는 기회로 다시 제대로 책을 읽을 수 있게 되었다.

 

리팩터링이라는 주제는 이제 개발자라고 이야기 할 수 있을 정도의 해가 지난 나에게는 필수와 같은 주제이며, 이것을 항상 어떻게 하는게 좋을 것인지를 고민하는 나에게 주는 사막의 오아시스와 같은 책이라고 생각이 든다. 이 책이 어떻게 나에게 있던 기존 지식을 잘 정리해 줄 것이며, 몰랐던 나의 지식을 어떻게 채워줄 것인지 기대하며 이 책을 읽었던 경험에 대해 나누고자 한다.

 

> 책에 대한 간단한 정보

 

이 책은 마틴 파울러가 지은 리팩터링의 2판이다. 당시에는 켄트 백과 마틴 파울러가 공동저자로 되어있었는데, 이번에는 마틴 파울러 혼자 저자로 되어있다. 그래도 베이스는 갖춰져 있어서 아무래도 나았을까. 현재 시점에 맞추어 나온 책이라는 기대를 갖게 만드는 제목이었다. 개발 기술은 1판이 나온 2002년과 18년이 흘렀으므로 강산이 두 번이나 바뀔만큼 대단히 많이 바뀌었으며, 그것을 기존 1판으로 소화하기 힘들다고 판단될만한 시점에서 이렇게 책이 나온것이라 기대를 품을만 하다고 생각하였다. 책 자체가 갖는 무게감 만큼, 책 표지디자인은 그에 맞게 되어있었다고 생각이 된다.

 

책 정보를 보면 초판1쇄발행일이 2012년 11월 9일로 되어있는데, 이 것은 어떤 날짜를 의미하는 것인지 정확하게는 모르겠다. 1판에는 자바를 대상 언어로 하여 책이 구성되어 있었는데, 2판에서는 (대세라 그런지) 자바스크립트를 대상으로 책을 작성하였다. 내 개인적인 입장에서는 살짝 아쉽지만, 언어가 그리 중요한건 아니니 큰 문제는 아니다.

 

> 첫 느낌 및 목차

목차에서는 정말 다양한 케이스에 대해서 담아서 정리했다는 느낌이 들었다. 특히 사전과 같은 느낌을 받았다. 필요할 때 찾아서 보아야 하는 사전과 같은 발췌독이 어울리는 책이다. 그렇다고 또 마냥 필요할 때만 접할수는 없는것이 한번은 꼭 읽은 뒤에야 내 머릿속에 어느정도 인덱싱이 이루어지기 때문에 필요할 때 생각이 날 수 있기 때문일 것이다.

챕터 안 세부 목록을 나열하는게 실제적으로 도움되는 목록이겠지만, 너무나 많아 챕터만 나열하면 다음과 같다.

 

CHAPTER 01. 리팩터링: 첫 번째 예시

CHAPTER 02. 리팩터링 원칙

CHAPTER 03. 코드에서 나는 악취

CHAPTER 04. 테스트 구축하기

CHAPTER 05. 리팩터링 카탈로그 보는 법

CHAPTER 06. 기본적인 리팩터링

CHAPTER 07. 캡슐화

CHAPTER 08. 기능 이동

CHAPTER 09. 데이터 조직화

CHAPTER 10. 조건부 로직 간소화

CHAPTER 11. API 리팩터링

CHAPTER 12. 상속 다루기

 

 

> 인상깊은 부분들

첫번째, 이 책을 시작하는 단계에서는 연극 공연료를 출력하는 메소드인 statement() 라는 하나의 메소드를 중심으로 리팩토링 해 나가는 절차를 예시로 보여준다. 겉보기에 별 문제가 없어보이는 코드이지만 이 코드를 더욱 변경이 용이하게 만들고, 이해가 쉽도록 만드는 절차가 되어간다. 전제조건으로는 테스트 코드를 만드는게 필수라고 이야기 하고 있다. 일단 하나를 맛보고 시작하는 데에서는 괜찮다고 여겨지기 때문에 직관적이었다.

 

두번 째, 예시가 지나간 뒤에는 바로 간단하지만 중요한 리팩터링 원칙에 대해 다룬다. 이론적인 부분이다. 응용이 아무리 중요하다지만, 이 중요한 응용 뒤에는 흔들리지 않는 원칙이 존재하는 것이다. 그러기 때문에 원칙을 언급할만한 타이밍에 원칙을 세움으로써 지금 가는 방향이 헷갈리지 않도록 돕고 있다고 생각한다.

 

세번째, 우리가 백화점에서 물건을 고를 때 카탈로그로 고르는 것처럼, 이 것도 마찬가지로 카탈로그라는 개념을 도입하였다. 우리가 해야할 리팩터링의 단계를 카탈로그로 나열했는데, 이 카탈로그를 보는 방법부터 차근히 알려준다. 사실 우리가 궁금했던 부분은 바로 이 부분일 것이다. '나에게 이미 많은 Legacy code가 존재하는데 이것을 어떻게 하란 말인가'에 대한 답이 된다고 생각한다.

 

덤으로 이것은 죽은 코드를 제거하는 것도 나와있어서 흥미롭다고 생각했다. 사실 10년전만 해도 죽은 코드는 잘 관리하는게 히스토리 관리상으로도 중요했다. 하지만, 현재는 VCS가 너무나도 잘 되어있고, 그래서 사실 죽은코드는 잘 쳐내는 것이 중요하다는 것을 알려주고 있다. 시대의 흐름에 따른 부분이라고도 할 수 있을 것이다. 좀 더 깔끔한 코드가 후에 유지보수를 잘 하도록 돕는다고 알려주고 있다.

 

> 괜찮은 부분

- 어려운 주제 책 구성이지만, 자연스러운 흐름을 담아서 보기가 쉬운 편이다.

- 현대에 필요한 프로그래밍 기법에 맞추어 리팩터링 방법을 소개하였다.

- 고급개발자로서 필요한 소양을 갖출 수 있도록 돕는 내용들이 사이사이에 많이 들어있다.

- 스테디한 책으로써 두고두고 보기 좋도록 되어있다.(단, 미리 한 번 읽고 인덱싱이 되어야 한다.)

- 발췌하여 찾아봐야 하는 책인만큼 옆에서 보았을 때 챕터의 변화가 눈에 보이도록 인쇄되어있다.(배려라 생각된다.)

 

> 아쉬운 부분

- 자바에서 자바스크립트로 된 부분이 이해는 되지만, 개발자에 따라 단점이 될 수도 있을 듯 하다.(순전히 개인적)

- 책이 중간중간 따라가서 다른 곳을 참고하도록 된 부분이 많은데(주석으로 된 표현) 그것을 따라가기가 쉽지 않다.

- 책이 굵은 글씨와 도표로 Hightlighting되어 있는 부분이 있으나, 시대의 흐름에 맞춰 적절한 컬러가 들어있었다면 좀 더 보기가 편했을 것 같다.

 

> 개인적인 평점

- 가격: 8 / 10

- 내용: 10 / 10

- 디자인: 8 / 10

- 구성: 9 / 10

 

> 정보

저자: 마틴 파울러(Martin Fowler)

옮긴이: 개앞맵시(이복연), 남기혁

출판사: 한빛미디어

가격: 35,000원

전체 페이지: 550페이지

 

** 이 리뷰는 "한빛미디어"를 통해 도서를 제공받아 작성하였습니다.

반응형

댓글