리팩토링 - 코드 품질을 개선하는 객체지향 사고법

1. 이 책은?

OOP에 가장 큰 영향을 준 두 아이디어인 ‘디자인 패턴’과 ‘리팩토링’은 사실 그 의미는 매우 유사하다. 하지만 마틴 파울러의 ‘리팩토링’이 많은 사람들의 관심을 받으면서 좀 더 보편적인 개념으로 자리잡게 되었다.

본인도 집에 리팩토링 책이 4권이나 된다. 원서, 대청판, 루비버전, 한빛판 무려 같은 책이 4권이나 집에 굴러다닌다. 그럼에도 불구하고 이 책을 다시 또 읽는 이유는 읽으면 읽을 수록 새로운 점이 계속 보이기 때문이다.

나는 C언어를 먼저 배웠고, 자료구조와 알고리즘을 거쳐서 운영체제까지 모든 수업을 C로 배웠다. 실습을 비롯한 모든 학습과정에서 C++, Java는 단 한번도 배워본 적 없으며 C언어가 길이요, 진리였다. OOP는 넘기 힘든 벽이었다. 설계형 언어라는 OOP의 산을 넘나들기에는 철학과 구조가 너무나도 상이했다.

OOP를 배우면서 느껴지는 이질감과 알 수 없는 설계 구조 덕분에 OOP 프로그램을 멀리하게 될 그 떄 쯤에 ‘리팩토링’이란 책을 읽게 되었고, 프로그램을 좀 더 넓게 볼 수 있는 좋은 기회를 얻었다. 나의 OOP 실력을 무럭 무럭 자라게 해 준 것은 ‘8번’의 ‘리팩토링’ 책읽기 였다. 문법을 공부한 것도, 예제를 파고 든 것도 아니였다. 리팩토링과 디자인 패턴에 대한 다독과 정독이 OOP에 대한 시야를 넓게 해 주었다.

이 책은 추천하는 책이 아니라, OOP 프로그래머 라면 꼭 읽어야 한다. 필독서라고 감히 칭하고 싶다.

2. 장점과 단점

현재 대청판이 절판된 상황에서(왜 절판시켰는지 도저히 모르겠다.) 한빛미디어의 복각판 이외에는 달리 선택권이 없다. 물론 복간판을 번역하신 분께서 루비버전의 리팩토링 책도 같이 번역하셔서, 루비버전을 보셔도 좋겠지만 국내에서 루비가 대중적으로 자리잡은 언어가 아니기 때문에 루비버전에 대한 접근은 조심스럽다.

번역자 분께서 루비버전의 리팩토링을 번역하셨기 때문에 번역의 질이 매우 높고, 일관성 있다. 특히 용어를 한국어로 잘 번역하셨기 때문에 읽는데 무리가 없다. 그리고 책이 생각보다 얇기 때문에 들고다니면서 읽을 수 있다는 점(대청판은 하드하다.)도 장점이다. 대청판에 비해서 문맥도 매우 부드럽게 되어있어서 이해하기에도 좋다.

3. 총평

한빛미디어의 리뷰어로서 마지막 리뷰를 하게 된 책이다. 그래서 일부러 이 책을 선택했다. 집에 리팩토링 책은 굉장히 많다. 하지만 마틴 파울러의 ‘리팩토링’ 보다 좋은 책은 찾아보질 못했다. 디자인 패턴 책이 아무리 다양해도 GoF의 한계를 벗어나지 못하는 것과 동일한다.

꼭, 읽어보길 권하고 싶다. 이 책은 OOP의 매뉴얼 같은 책이다. 단순히 OOP를 잘하기 위해서가 아니라 OOP가 가진 진한 맛을 우려내기 위해서 꼭 읽기를 강권한다.

무엇보다 숨겨진 좋은 책을 찾아서 복각해준 한빛미디어에게 진심으로 감사한 마음을 가진다. 류광씨 번역의 ‘TAOCP’ 이후로 가장 멋진 책이다. 이 책은 번역하신 분의 노고보다 복각을 결정한 한빛미디어에게 더 큰 박수를 보내고 싶다. 그리고 번역하신 분의 탁원한 용어 선택과 깔끔한 문장처리는 그 어떤 버전의 리팩토링책 보다 훌륭하다.

자, 서점으로 달려가자.!


  1. “[…] 그러나 내 느낌은 그저 그랬다. 재미있는 구상이긴 하지만, 글쎄, 그게 그렇게 중요할 것 같지는 않은데, 라는 정도였다. 세상에. 나의 예상은 그 정도로 빗나갔다!”

  2. “[…] 이런 시스템을 개발하는 비용의 대부분은 초기 버전(release)을 개발하는데 들어가는 것이 아니라 시간이 흐르면서 시스템을 수정하고 변경하는데 들어갔다. 그러한 수정을 좀 더 용이하게 만들고 비용도 적게 들어가게 만든다면 회사의 입장에서 보았을 때 큰 이익을 남길 수 있으리라는 점은 분명했다.”

Written on January 1, 2013