깊이를 더하는 지름길
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.
- 원제 : Clean Code Cookbook
- 저자 : Maximiliano Contieri
- 출간 : O’Reilly Media, 2023 / 한빛미디어, 2024
백엔드 엔지니어를 위한 좋은 지침서들이 여럿 있다. 로버트 C 마틴의 클린 코드와 클린 아키텍처, 마틴 파울러의 리팩터링, 에릭에반스의 도메인 주도 설계를 비롯해 많은 책들이 있다. 나아가 백엔드에서 많이 사용되는 자바로 간다면 조슈아 블로크의 이펙티브 자바, 이일민의 토비 스프링같은 책들은 참 좋은 지침서다. 물론 이 책들은 프로그래밍 서적이기 때문에 코드가 등장하긴 하지만, 코드에 대한 내용보다는 설계나 원론적인 이야기들이 많이 오간다. 책을 읽기 전에 이미 객체지향에 대해서, 설계에 대해서, 언어 스팩에 대해서 많은 숙련도가 있어야 흡수가 가능하다. 그래서 나는 앞에 나열한 책들은 허들이 낮은 편이 아니라고 생각한다.
그러나 우리는 언젠가 주니어에서 시니어로, 코더에서 디자이너로 올라가야 하는 시기가 올 것이다. 좋은 개발 문화에서 많은 코드를 보고, 작성하고, 리팩터링 해보고, 좋은 선배들을 따라가면 모두가 좋은 개발자가 될 것이다. 그러나 우리 중 대다수는 좋은 문화도, 좋은 코드도, 좋은 선배도 없다는 걸 다들 잘 안다. 그래서 시간이 흐른다고 시니어가 될 일도, 설계를 잘하는 개발자가 될 일이 아니다. 하지만 이 시절 개발자는 설계와 코딩을 할 때 궁금한 부분이 생기고, 많은 경험이 없기 때문에 이를 해결할 직관력이 떨어지는것이 사실이다.
이 책은 그 중간의 간극을 매꿔 줄 수 있는 책이다. 원론적인 이야기 보다, 문제인식 – 해결방법 – 레시피 순으로 간결하고 빠르게 지나간다. 하나의 아이템은 대부분 3 페이지를 넘지 않는데, 그러면서도 before – after 코드를 보여준다. 각 아이템의 끝자락에는 같이 읽어볼만한 다른 아이템을 같이 소개한다. 적은 활자로 많은 내용을 담으면서도, 주니어들이 궁금해 할 만한 단어 해설도 충실히 포함하고 있다.
책의 전반부는 코드 리팩터링에 대해서 소개한다. 16장 이후부터는 설계와 테스트, 운영환경에서 코드적으로 고려해볼만한 내용들이 주를 이룬다. 그래서 가볍게 읽기 시작했다가 상속, 합성, 결합도, 응집력에 대한 이야기가 나오면서 개발자라면 연차와 상관없이 두루두루 읽기 참 괜찮은 책이라고 생각했다. 별미는 책 끝에 용어사전 챕터인데, 알고는 있지만 막상 설명하려면 방대한 내용들을 머릿속으로 정리하기 어려운 용어들에 대해 단 몇문장으로 군더더기 없이 설명하는 챕터가 있다. 개인적으로 만족스러웠던 부분은 책에서 null 을 다루는 방법에 대해 따로 챕터를 할애하고 있다는 점과, 기존에 작성된 코드에 대해 상속과 합성을 이용해 어떻게 리팩터링 할 것인가에 대한 내용이 있다는 점이다.
한마디로 사전식 책임에도 불구하고 내용의 깊이가 있고, 설명에 대한 허들도 매우 낮은 편이다. 근래 읽었던 지침서 성격의 책 중에서는 켄트백의 구현패턴 이후로 가장 읽어볼만한 책이였다.
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.