GoF 디자인 패턴! 이렇게 활용한다 (장세찬, 2004) 독후감
내공이나 디자인 패턴에 대한 지식 없이 ’GoF 디자인 패턴’을 처음부터 읽어서 이해하기는 힘들다. 그래서 GoF 디자인 패턴에 나온 패턴을 이해하기 쉽게 풀어놓은 책을 골라서 먼저 읽는다. 이 책도 그런 책 중의 하나다.
디자인 패턴을 사용해서 우아하게 문제를 해결하기에 앞서 하나를 변경하려면 사방팔방을 다 들쑤셔야 하는 나쁜 해결방법부터 보여주는 게 좋다. 프로그래밍 면접 이렇게 준비한다에서 O(n^2) 답을 먼저 제시하고 개선해서 O(logn) 혹은 O(n)으로 문제를 해결하는 게 좋았는데, 이 책에서도 이런 접근 방법을 보여줘서 좋았다.
그리고 제목 그대로 C++을 사용해 예제 코드를 짰다. Java로 예제를 짠 책들이 넘쳐나는데, C++을 주로 사용하는 프로그래머에겐 반가운 일이다. 허나 그냥 소스 코드를 C++ 문법에 맞춰 짠 것에 지나지 않는다. C++ 구현 이슈를 하나도 다루지 않는다. 명색이 책 이름에 C++을 붙였는데도 말이다. 아무리 언어 스팩에 멀티 쓰레드가 포함이 안 됐다고는 하나 멀티 쓰레드 환경에서 싱글톤을 다루지 않은 건 이해가 안 된다.
겹치는 예제도 있고 ’GoF 디자인 패턴’에 나온 내용을 그대로 붙인 것도 많이 보인다. 원조인 책이 분명히 있고 그걸 쉽게 이해하기 위한 책이라서 이런 부분은 어쩔 수 없다고는 생각한다. 하지만, 이 책을 보는 사람은 ’GoF 디자인 패턴’ 책을 본다고 가정하고 이해하는 데 필요한 지식을 풀어서 설명하면 어땠을까 하는 아쉬움이 남는다.
평가가 좋은데, 나는 마음에 안 들었다. 포지션이 애매하다. 디자인 패턴을 처음 접하는 사람에게는 이 책보다는 Head First Design Patterns가 더 낫다. 아님 헤드 퍼스트보다는 수준이 높은 책을 원한다면 실전 코드로 배우는 실용주의 디자인 패턴이 낫다. 자바를 못해서 C++로 된 이책을 사는 거라면 말리고 싶다. 자바로 된 정말 좋은 책들이 많다. 언어 때문에 그런 책들을 포기하는 건 너무 아까운 일. C++을 배웠다면 책을 읽을 정도만큼만 자바를 배우는 건 그리 어렵지 않다.