## 믿고 보는 그 책
개발자라면 이름만 들으면 누구나 아는 "마틴 파울러", 그가 쓴 책 리팩터링이 제 2판으로 돌아왔다. 비싼 돈 주고 원서 산지가 얼마 안 된 것 같은데 벌써 번역서가 나오다니 참으로 반갑기 그지없다.
## 리팩터링 2판으로 돌아오다.
아마 1판은 인사이트에서 하드커버로 출간하고, 한빛미디어에서 페이퍼백으로 재출간했었는데 개인적으로 후자가 번역 품질이 좋았던 기억이 있다. 이번 2판도 한빛미디어에서 출간하였고, 번역 품질도 좋고 술술 읽히는 수준이라 이해에 크게 문제가 없다.
그리고 사실 언어야 상관 있겠냐마는 1판에서는 자바로 예제를 설명했다면, 2판에서는 자바스크립트로 예제를 설명하고 있다. 원서는 종이책은 물론 웹 버전으로도 발간하여 중간중간 업데이트를 해주고 있는데, 이 번역서에도 웹판의 일부 추가된 부분이 함께 번역되어 더욱 좋았다. 다만 살짝 아쉬운 점은 리팩터링에 대한 전반적인 설명을 하는 1~5장에서 사용한 리팩터링 기법들의 인덱스가 원서에서는 해당 페이지로 표시되어 찾아가기 쉬웠던 반면, 번역서에는 장/절로 표시되어 있어 다소 찾아가기 힘들었다.
## 내용을 살펴보면,
1장은 실제 예제 코드를 가지고 리팩터링이 무엇인지 전반적인 과정을 보여준다. 2장은 리팩터링을 왜 해야 하는지, 그리고 언제 해야 하는지 이야기하고 있다. 3장에서는 어떤 코드를 리팩터링해야 하는지 판단하기 위해 코드의 나쁜 냄새에 대해 설명한다. 4장에서는 짧은 스텝으로 진행해야 하는 리팩터링에서 테스트 코드의 중요성을 강조하며 테스트 방법에 대해 다룬다. 5장부터 12장까지는 리팩터링 카타로그와 실제 리팩터링 기법들을 예제와 함께 자세히 설명하고 있다.
## 이 책은 어떻게 읽어야할까?
1판을 보신 분들이라면 아시겠지만 2판도 리팩터링의 핵심 기법은 비슷하다. 다만 예제들을 자바스크립트로 새롭게 작성하면서 관련 예제와 설명들도 한층 업그레이드되었다.
책에서는 리팩터링 과정을 한 번에 정말 작은 단계로 조심스럽게 진행하는 과정을 지나칠 정도로 보여주는데 이러한 한 단계 한 단계 점진적인 개선은 테스트를 수반한 안전한 방법임을 상기해야 한다. 또 그러한 단계가 왜 필요한지 고민해 본다면 리팩터링 세계에 한 걸음 더 다가갈 수 있지 않을까 싶다.
디자인 패턴을 공부하던 시절 프로덕션 코드에 어설프게 적용하며 어깨를 들썩이던 경험이 있었다. 하지만 그다지 필요도 없는 곳에 적용하여 코드의 복잡도만 올라가고 가독성은 떨어지는 부작용만 낳았다. 리팩터링도 기법만 달달 외운다고 저절로 코드의 개선이 이루어질거라는 환상은 갖지 말자. 리팩터링을 언제 해야 하는지 아는 것, 즉 코드의 나쁜 냄새를 감지하는 능력을 키우고 리팩터링을 적절하게 적용해야 함을 잊지 말아야 한다. 그러기 위해선 책의 코드들을 그대로 따라 쳐보는 것보다는 책을 덮고 예제 코드의 나쁜 냄새를 맡고 조금씩 리팩터링 해보는 게 중요하지 않을까 싶다. 물론 테스트 코드는 선택이 아닌 필수겠다. 이렇게 한 단계씩 리팩터링을 진행해 보면서 그 리듬을 느껴보고, 그것이 습관이 되어 그 행위가 내 코드에 녹여 들기를 기대해 본다.
## 마지막으로,
마틴 파울러가 이야기했던 말이 원서 표지에는 아래와 같이 적혀있다.
"Any fool can write code that a computer can undestand. Good Programmers write code that humans can understand."
좋은 개발자는 사람이 이해하기 쉬운 코드를 작성해야 한다. 이해하기 쉬운 코드란 단지 이해라는 범주를 넘어 버그를 쉽게 찾을 수 있음은 물론 개발 속도를 높여주고 결국 존재하는 코드의 설계를 향상시켜준다. 자, 이제 이 책을 읽고 좋은 개발자가 되어볼 차례이다.