meixiang***
2021-03-21

지난 20년간 전 세계 프로그래머에게 리팩터링의 교본이었던 이 책의 1판은, 기존 코드의 디자인을 개선하고 소프트웨어 유지 관리 능력을 향상시켰으며 기존 코드를 이해하기 쉽게 만드는 데 도움을 주었습니다.
신입 개발자이던 시절 나에게 내가 작성하지 않은 코드나 오래된 코드, 볼륨이 큰 코드는 공포의 대상이었다. (상대적인 관점이지만) 잘 짜여진 코드가 아니라면 더더욱. 5-6 단계까지 들어가는 if문 혹은 반복문, 너무 긴 코드 등등 고치긴 고쳐야 하는데 하나를 고치면 다른 하나가 작동하지 않고 이 코드가 뭘 의미하는지도 모르겠던 그 시절에는 노트에 그 코드들의 단계를 다 적어가면서 파악하고 고쳐야 했었다. 당연히 남의 코드를 삭제하는 것도 두려워 삭제하지 못하고 주석만 처리한 채 남겨두기도 하고 말이다.
지금은 나의 예전 코드나 다른 사람이 작성한 코드도 아 이 부분은 이런 역할을 하는군, 이건 사용하지 않는군 하며 덜어내고 수정할 수 있게 되었지만 아직 설계를 틀거나 접근 방향 자체를 틀어야 하는 경우까지 가면 그만큼 시야가 넓지 못해서 그런지 어렵게 느껴지는 것도 사실이다. 리팩터링은 점진적 개선을 소개하고 있기 때문에 현재 본인이 적용할 수 있는 부분부터 조금씩 적용 가능한 방법들을 찾아갈 수 있다는 점이 유용하게 느껴졌다.
또한 개인적으로 고민했던 성능과 가독성 사이의 선택이라든지, 어떤 코드를 리팩터링 대상으로 봐야 하는지 등등 관점에 대해서도 서술되어 있기에 협업 경험이 적거나혼자, 혹은 소수의 인원이 개발하는 개발자들이 할만한 고민에 대해서도 어느정도 답을 주는 책이다.
이 책은 구판에서는 자바, 개정판에서는 자바스크립트로 쓰여져 있는데 객체지향은 개념일 뿐 언어는 중요하지 않다는 것을 한번 더 되새기게 되었다. 객체지향으로 생각하는 게 아직도 많이 부족한 나이기에 익숙한 언어로 더 많은 도움을 받을 수 있을 것 같다. 실제로 습관적으로 개발했지만 항상 의문이 생겼던 부분을 이번 리뷰 기간에 리팩터링 책을 가지고 다니면서 참고하여 개선해보기도 하였다.
왜 바이블처럼 여겨지는 책인지 느껴질 정도로 실질적인 도움이 되는 책이었으며, 책 내용 중 코드를 읽기 좋게 만들어야 맥주가 뇌세포를 파괴해도 나중에 코드를 파악할 수 있다는 농담이 있을 정도로 문체도 무겁지 않아 재밌게 읽을 수 있는 책이었다.