hji7***
2022-04-24

유지관리가 편리한 객체지향 소프트웨어 만들기! “『헤드 퍼스트 디자인 패턴(개정판)』 한 권이면 충분합니다!”
2005년 9월 초판이 나왔던 책의 새로운 버전을 지난달에 재번역 발간한 책입니다.
저는 이 책의 예전 판을 읽었었는데요. 2010년 10월이었습니다. 당시 책을 읽고 "Head First 시리즈를 안 좋아했는데, 괜찮다는 느낌이 온다"라고 메모해 두었네요. 당시만 해도 GoF의 "디자인 패턴"을 읽고, 이해되지 않는 부분들이 있어서 고민하던 중이었거든요. 그런데 이 책을 읽고 이해도를 꽤 높일 수 있었습니다.
예전판의 번역자는 "서환수"님이셨는데요. 이번 판도 "서환수"님이 번역하셨더군요. 17여 년 만에 같은 책을 번역하신 셈인데요. 책 내용을 보다 보면 정말 재미있는 부분들이 있습니다. 과거 서완수 님의 번역 문체와 현재 서완수 님의 번역 문체가 미묘하게 바뀐 건데요. 예를 들어서 예전판에, "전문 용어는 신참 개발자들에게 훌륭한 자극제가 됩니다"라고 번역되어 있는 부분이 이번에는 "전문 용어는 신입 개발자에게 훌륭한 자극제가 됩니다" (64페이지)로 번역되었더군요. 모르기는 몰라도, 과거 번역 결과를 그대로 가져오기 보다 새로운 판의 번역을 따로 하신 게 아닌가 싶었습니다.
원전의 내용도 꽤 많이 바뀐 것 같았는데요. 전체적인 구조나 각 장이 설명하는 뼈대는 그대로 둔 채로, 설명하는 방식을 바꾸기도 하고, 자바 기술 변화에 맞춰서 내용을 수정/추가한 것을 볼 수 있었습니다. 예를 들어, 예제에 자바 클로저를 사용하는 코드가 추가된 부분이나 내장 옵서버 객체가 사라지는 바람에 이 부분을 사용하는 방법을 보여주는 대신 Observer가 사라졌다고 언급하는 부분이 보이더군요.
2010년에 읽을 때도 그렇게 생각했지만, <헤드 퍼스트 디자인 패턴>은 디자인 패턴을 공부하면서 이해해야 할 "용어"가 모두 등장하고 있습니다. 얼마 전 저는 "데미테르 법칙"에 대해서 글을 쓸 기회가 있었는데요. 데미테르 법칙은 "최소 지식 원칙"이라고 <헤드 퍼스트 디자인 패턴>에서 설명하고 있거든요.
"할리우드 원칙" 같은 용어도 다른 책에서 잘 언급하지 않지만 디자인 패턴 이해를 위해 꽤 중요한 용어이고요. 그래서, "디자인 패턴"을 공부하고 있는 개발자라면 <헤드퍼스트 디자인 패턴>으로 도움을 많이 받으실 수 있을 것 같습니다.
다만, 책의 예제가 모두 자바를 사용하고 있기 때문에 다른 언어를 사용하는 개발자라면, 조금 낯설다는 느낌을 받겠더군요. 설명하는 내용들이 객체지향언어 특히 자바를 사용하는 디자인 패턴에 대한 내용이기 때문인데요. 디자인 패턴은 결국 특정 언어 패러다임과 프로그램언어를 목표로 설명하게 되지만 디자인 패턴이 필요한 이유는 객체지향이나 자바를 위해서가 아니기 때문에, 다른 언어를 사용하는 사용자라도 이 책에서 얻을 게 없다고는 말할 수 없을 것 같습니다. 저 같은 경우도 자바를 현업에서 사용한 적이 없지만, 디자인 패턴이나 예전 버전 리팩토링 책을 읽으면서 많은 걸 느낄 수 있었거든요. 아마도 "왜" 이런 패턴이 필요하게 되었는지에 대한 이해는 결국 언어에 의존적이지 않기 때문이 아닐까 싶습니다.
책의 말미, 615쪽에 보면
" 시스템이 점점 복잡해지면서 처음에 기대했던 유연성이 전혀 발휘되지 못한다면 패턴을 과감하게 버리는 게 낫습니다. 즉 패턴보다 간단한 해결책이 더 나을 것 같다 싶을 때 패턴을 제거하면 됩니다"라고 언급하고 있는데요. 이런 마무리가 결국 "디자인 패턴"을 제대로 설명하기 위한 마무리가 아닐까 싶습니다.
근본적으로 디자인 패턴을 사용하는 것이 "유연성" 때문이라는 생각인 건데요. 그렇다면 프로그래밍 언어가 무엇이 되었던, 어떤 패러다임이 되었던 비슷한 고민과 해결책이 필요하게 되고, 디자인 패턴으로 정리될 수 있게 되는 거죠. 그럼, 아마도 <헤드퍼스트 디자인 패턴>에서 이야기하고 있는 디자인 패턴 용어들을 가져다 쓰게 될 것이고요.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."