예시를 따라가며 배우는 좋은 코드
이 책에서 가장 좋았던 점은 풍부한 예시 코드다. 코드는 특정 언어에 종속되지 않은 의사 코드로 작성됐지만 문법과 구조가 자바에 가까워 익숙하게 읽을 수 있었다. 개념을 먼저 길게 설명하기보다 실제 코드의 문제를 발견하고 개선하는 흐름을 따라가게 해 추상적인 원칙도 비교적 쉽게 이해됐다.
책은 처음부터 모범 답안만 제시하지 않는다. 먼저 손볼 필요가 있는 코드를 보여주고, 그 코드가 왜 문제가 되는지 도식과 화살표로 짚는다. 이후 어떤 원칙을 적용해야 하는지 설명한 뒤 개선된 코드까지 연결하므로 결과만 보는 것이 아니라 변화의 근거를 함께 따라갈 수 있었다.
| 단계 | 책이 보여주는 것 | 읽으며 얻을 수 있는 것 |
|---|---|---|
| 개선 전 | 문제가 숨어 있는 코드와 상황 | 무엇이 불편하고 위험한지 구체적으로 발견한다 |
| 분석 | 도식, 화살표, 관련 이론 | 수정해야 하는 이유를 말로 설명할 수 있다 |
| 개선 후 | 원칙을 반영한 코드 | 전후 차이와 선택의 효과를 비교할 수 있다 |
추상화 계층을 두는 이유, checked exception과 unchecked exception의 차이, 의존성 주입처럼 자주 접하면서도 막상 설명하려면 헷갈리는 주제도 다룬다. 각각의 개념이 코드에서 어떤 문제를 해결하는지 연결해 읽다 보니 개발의 기초 체력을 다시 다지는 기분이 들었다. 결국 좋은 코드를 쓰려면 문법보다 먼저 이런 기본기가 단단해야 한다.
![]()
특히 의존성 주입을 설명하는 8장이 재미있었다. 같은 주제를 설명한 글과 책은 많지만 이 책의 설명은 유독 머릿속에 잘 들어왔다. 개념을 분리해서 정의하는 데 그치지 않고 적절한 예시 코드로 필요성과 효과를 함께 보여준 덕분이라고 생각한다.
개발자 사이에서 의견이 갈릴 만한 주제를 다루는 방식도 편안했다. 저자는 자신의 관점을 밝히고 그 판단을 지지하는 근거를 제시하지만, 그 선택이 언제나 유일한 정답이라고 밀어붙이지 않는다. 다른 관점이 성립할 수 있음을 인정하기 때문에 독자도 원칙을 외우기보다 각 주장의 전제와 맥락을 생각하며 읽게 된다.
읽는 동안 여러 개발 서적의 핵심 튜토리얼을 한데 모아 놓았다는 느낌도 받았다. 『클린 코드』나 『오브젝트』와 겹치는 내용이 있지만 지나치게 깊은 곳까지 내려가기보다 지금 알아야 할 내용을 간결하게 정리한다. 마지막 장의 테스트 코드 이야기를 읽고는 관련 책을 더 찾아보고 싶어졌는데, 설명이 모자라서가 아니라 테스트 코드를 제대로 작성하는 일이 왜 중요한지 맛보기로 잘 보여주었기 때문이다.
필기 공유
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()