1 minute read

nil

내공이나 디자인 패턴에 대한 지식 없이 ’GoF 디자인 패턴’을 처음부터 읽어서 이해하기는 힘들다. 그래서 GoF 디자인 패턴에 나온 패턴을 이해하기 쉽게 풀어놓은 책을 골라서 먼저 읽는다. 이 책도 그런 책 중의 하나다.

디자인 패턴을 사용해서 우아하게 문제를 해결하기에 앞서 하나를 변경하려면 사방팔방을 다 들쑤셔야 하는 나쁜 해결방법부터 보여주는 게 좋다. 프로그래밍 면접 이렇게 준비한다에서 O(n^2) 답을 먼저 제시하고 개선해서 O(logn) 혹은 O(n)으로 문제를 해결하는 게 좋았는데, 이 책에서도 이런 접근 방법을 보여줘서 좋았다.

그리고 제목 그대로 C++을 사용해 예제 코드를 짰다. Java로 예제를 짠 책들이 넘쳐나는데, C++을 주로 사용하는 프로그래머에겐 반가운 일이다. 허나 그냥 소스 코드를 C++ 문법에 맞춰 짠 것에 지나지 않는다. C++ 구현 이슈를 하나도 다루지 않는다. 명색이 책 이름에 C++을 붙였는데도 말이다. 아무리 언어 스팩에 멀티 쓰레드가 포함이 안 됐다고는 하나 멀티 쓰레드 환경에서 싱글톤을 다루지 않은 건 이해가 안 된다.

겹치는 예제도 있고 ’GoF 디자인 패턴’에 나온 내용을 그대로 붙인 것도 많이 보인다. 원조인 책이 분명히 있고 그걸 쉽게 이해하기 위한 책이라서 이런 부분은 어쩔 수 없다고는 생각한다. 하지만, 이 책을 보는 사람은 ’GoF 디자인 패턴’ 책을 본다고 가정하고 이해하는 데 필요한 지식을 풀어서 설명하면 어땠을까 하는 아쉬움이 남는다.

평가가 좋은데, 나는 마음에 안 들었다. 포지션이 애매하다. 디자인 패턴을 처음 접하는 사람에게는 이 책보다는 Head First Design Patterns가 더 낫다. 아님 헤드 퍼스트보다는 수준이 높은 책을 원한다면 실전 코드로 배우는 실용주의 디자인 패턴이 낫다. 자바를 못해서 C++로 된 이책을 사는 거라면 말리고 싶다. 자바로 된 정말 좋은 책들이 많다. 언어 때문에 그런 책들을 포기하는 건 너무 아까운 일. C++을 배웠다면 책을 읽을 정도만큼만 자바를 배우는 건 그리 어렵지 않다.