우연찮게 같은 회사 사람이 보는 것을 보고서, 이책을 처음 접하게 되었다.
객체지향 설계 방법으로서 디자인 패턴을 접한지 벌써 3년이 되어가는데, 내가 처음 이책을 접했었더라면 하는 생각이 들 정도로 아주 쉽게 설명되어 있다. 처음 디자인 패턴에 대해 공부할 때 많은 시행착오와 오해가 있었는데, 이책은 비록 모든 패턴을 소개 하진 않았지만, 요긴하게 쓸만한 패턴에 대해서 아주 쉽게 접근해있었다.
물론 자바 문법에 대해서는 나 자신도 잘 모른다. 그러나 이책은 자바가 아니라 자바를 몰라도 디자인 패턴에 대해 개념상으로나, 기타 어려움을 느끼는 초심자들에게 크게 도움이 될 만한 책이라는 느낌이다.
원래 객체지향 설계란 개발자의 직관이 상당히 중요한데 이책의 저자는 프로그램을 짜나가면서, 설계하면서 그러한 직관성에 기초하여 예제를 잘 만들어 간 것 같다. 주변에 패턴을 처음 접하는 사람들에게 강추한다. 먼저 이책으로 기초를 잡고 많은 패턴들에 대해 추가적으로 공부해보면 될 거 같다.
프로그램을 읽기 쉽고 재사용 가능하고, 요구에 맞게 빨리 기능 추가를 할 수 있으려면 객체지향을 공부해야 합니다. 이를 위해서 디자인패턴 이라는 방법이 나오게 되었지만, 그 내용을 완벽히 이해한다는 것은 쉬운 일이 아닌 것 같습니다. 이 책은 그런 부분을 공부하는데 많은 도움을 주는 책입니다. 이 책에서는 디자인 패턴을 적용하지 않았을 때의 어려움과 디자인 패턴을 적용할 때의 유연함을 패턴마다 비교하고 있어 이해가 쉬운 편입니다. 또한 UML에 대한 약간의 소개도 도움이 되고, 리팩토링의 소개도 좋았습니다.
사실 주위에서 GoF책을 추천을 많이 해서, 서점에서 GoF원서를 읽어보았으나,
접근하기에는 어렵다는 결론을 내리고, 고민하던 차에,
우연찮게 산업인력관리공단에서 주최하는 5일짜리 디자인패턴 강의를 듣게되엇다.
낮에는 Cooper의 디자인패턴책으로 이론을, 이클립스로 클래스설계 실습을 병행하였고,
집에서는 이 책을 읽으면서 공부하였다.
예전에 자바 디자인 패턴입문 책(영진 출)을 읽어본적이 잇어서인지, 조금씩 정리돼는 느낌이었다.
이 책은 실무자를 대상으로 자바의 디자인 패턴과 리팩토링을 다루고 있다.
특히 디자인 패턴을 처음 접하는 독자를 위해 먼저 객체지향의 의미부터 프로그램 전반에 관한 포인트를 중심으로 설명하고 있다.
1~3부는 객체지향을 설명하고 있다. 객체지향의 의미부터 기존 언어와의 차이점과 잘못 사용된 객체지향의 예를 예제 소스코드를 통해 설명함으로써 객체지향이 무엇인지 좀 더 쉽고 정확하게 이해할 수 있다. 특히 3부에서는 설계에 있어 기본으로 알아야 하는 프로그램의 낮은 결합도, 높은 응집도와 유지보수 문제점 등에 관해 중점적으로 설명한다. 독자를 위해 디자인 패턴에 대한 의미와 활용에 대한 설명을 GoF에서 기술된 형식이 아닌 저자 자신만의 방식으로 하고 있다. 또 이 책의 특징이라 할 수 있는 적절한 비유와 삽화, 보기 쉬운 코드 등은 독자의 이해를 돕고 있다.
5부는 리팩토링에 관한 내용도 다루고 있으며, 특히 디자인 패턴과의 관계를 설명해준다. 예제 중간에 ‘만들어 봅시다’ 코너를 두어 직접 참여할 수 있는 부분을 두었고, 단원 끝마다 요약정리와 메모장을 두어 책의 활용도를 높였다. 자바 중급자를 대상으로 하므로 기본 개념들을 일생생활 소재에 비유해 이해를 쉽게 했고, 삽화를 통해 프로그램 서적이 가지는 단점인 지루함을 줄였다. 또한 코드를 과거 유행했던 간단한 게임 등을 예로 들어 흥미를 유발했고, 코드간의 짜임새가 좋아 한번 코드를 잘 이해하면 다음 단계로 쉽게 넘어갈 수 있게 했다. (사실 이 챕터는 디자인패턴에서 괜스리 분량만 차지하는 건 아닌가 라는 선입견이 잇었지만, 나름대로 재미있었던 부분이다.)
많은 내용을 담으려다 보니 분량이 많아졌고 다양한 예제를 접할 수 없어 독자의 적극적인 활용에 한계가 있지만 잘못 사용된 코드, 소프트웨어로서 부적합한 코드에 대해 친절히 설명했고, 공부하면서 생길 수 있는 의문점을 답과 함께 제시했다. 초중급자분, 자바문법에 대해 어느정도 알고있고, 클래스 설계와 맞물려서 같이 배우려는 분이라면 추천하고 싶은 책이다.
처음부터 읽기에 부담이 됀다면, p.279에 나와있는 대로 저자가 제시하는 디자인패턴의 공부순서를 본후에, 접근하는 것이 좋은 것 같다.
부록으로는 짝 프로그래밍을 이용한 객체지향 설계 협력 학습 방법을 제시하고 있다.
예제소스가 많이 나와있으나, 무작정 소스코딩부터 하지말고, 이클립스나 다른 IDE툴에서 클래스설계를 해보면서 패턴간의 차이를 비교분석해보길 권한다.
전반적으로 디자인 패턴 부분에서 문제점, 아이디어, 해법의 제시 등으로 구성을 일관화하고 있다는 점은 좋은 점이었으나, 소스를 일일이 치기에는 다소 많은 분량이었다. 부록으로 예제소스CD를 주었더라면 하는 아쉬움이 남는다.
고급 프로그래밍을 하기위해 많은 고민을 해왔었는데
객체지향 프로그래밍을 접하고, 책임위주의 프로그래밍을 해 왔었지만, 이 책을 접하기 전까지 정확하게 책임이란것이 무엇인지 알지 못했던것 같아요.
만들어 놓고서 이것보다 더 깔끔하고 정돈되게, 그리고 명확하게 할수 없을까? 라는 고민은 언제나 나를 따라 다니고 했었습니다.
이 책을 접하고 책임이란 단어를 알게 된것같아 만족스럽습니다.
객체지향 프로그램은 책임 이란 단어 하나로 모든것을 대변할 수 있을것 같습니다.
보면 볼수록 알고있던 기초 지식을 다져주는 매력이 있는 책이며, 소스코드 역시 아주 심플하지만, 말하고자 하는 것을 다 말해주고 있습니다. 집필자의 의도가 무엇인지, 그리고 설명방법역시 대화식으로 풀어나가기때문에 독자들은 고민은 많이 할수 있으며, 아주 깊은 곳까지 이해하긴 힘들겠지만, 수박 껍데기 정도는 맛볼수 있습니다. 수박속까지 원하신다면 그건 독자들의 피나는 노력에 의해서 가능하겠지요....
읽어볼만한 좋은 책이었습니다.
GoF의 디자인 패턴과 마틴 파울러의 리팩토링
이 두 책을 볼 정도라면 아마도 프로그래밍을
처음 시작하는 초보는 아닐 것이라고 생각한다.
아니. 프로그래밍의 초보가 아니라.
객체지향에 관해서 최소한 작은 크기의 프로젝트를
진행해 봤거나 무언가 "만들어"봤을꺼라고 생각된다.
하지만. 그 두 책은 당연한 말이지만 난이도가
꽤 높다. 특히 읽다보면 보통의 수준으로는
그냥 책장에서 재워두는 경우가 허다할 것이다.
이 책은 아마도 그런 사람들을 위한 책인 듯하다.
디자인 패턴과 리팩토링 자체가 아니라
객체지향을 공부했거나, 공부하려고 생각하거나
좀더 나은 수준의 자바 개발자가 되고 싶다면
필요한 책이다.
저자의 이상한(웬지 특이한) 그림들도
두껍고 어려운 책을 재미있게 보게 해 주는
상당한 도움인것 같다.
디자인 패턴은 확실히 많은 개발자들에게 신선하고 매력적인 주제임에 틀림없다.
나도 한 때 디자인패턴에 매료되어 『Design Patterns: Elements of Reusable Object Oriented Software』를 보았고, 항상 썬 교육 센터에서 주관하는 Design Pattern 강의를 듣고 싶어했다. 지금도 나의 책꽂이에는 『Core J2EE Patterns』과 『Pattern Language of Program Design』이 한자리를 차지하고 있다. 그리고 이제 또 하나의 책이 추가되었다. 유치한 『자바 디자인 패턴과 리팩토링』이다. 적어도 첫 장은 그렇다.
내가 만약 이런 책을 쓴다면 1부에서 3부까지(260페이지)는 하나의 장(30페이지 정도)으로 만들고, 본 내용은 4부에서, UML에 대한 내용은 Appendix로 하겠다. 이런 식으로 책을 구성하려는 이유는 설명이 너무 길면 지루해지기 쉽고, 소스가 차지하는 분량이 너무 많으면 주제에서 생각이 벗어날 때가 많기 때문이다.
저자는 객체지향 프로그램이 모든 문제의 해결책이라도 되는 것처럼 말한다. 사실 객체지향을 소개하는 대부분의 책이 객체지향을 만병통치약처럼 소개한다. 객체지향이 절차지향 프로그램의 단점을 해결하기 위해 나온 것은 분명하지만 절차지향보다 반드시 좋은 것은 아니다. 결국은 자신의 환경에 가장 적합한 것을 찾으려는 노력이 없으면 객체지향도 쓸모 없는 하나의 유행밖에 되지 못할 것이다.
내가 이 책에 대해 비판적인 이유는 “디자인 패턴과 리팩토링은 비트겐슈타인의 언어철학과 같다”는 생각 때문이다. 그는 자신의 책을 이해할 수 있는 사람은 스스로 비트겐슈타인의 책을 쓸 수 있는 사람이라고 했다.
어떠한 책도 디자인 패턴과 리팩토링을 잘 할 수 있도록 만들지 못한다. 자신이 직접 부딪히고 고민하기 전에는... 더욱 그럴 것이다. 그리고 책만으로 디자인 패턴과 리팩토링을 잘하게 될 수 있다는 기대를 가지면 분명 실망하게 될 것이다.
그래서 이 책은 디자인 패턴을 깊이 공부하려는 사람보다는 한 번도 접해 보지 못한 개발자들에게 적합하다. 디자인 패턴과 리팩토링이라는 주제를 소개하고, 그것이 프로그램 개발과 어떠한 연관성이 있는 상세하게 때론 지루하게 가르쳐 준다.
이 책을 포함해서 디자인 패턴을 자바 언어로 다룬 책은 대략 7가지 정도 된다. 그리고 리팩토링을 이라는 제목을 가진 책은 이 책을 포함해서 두 권이다. 아직까지 디자인 패턴과 리팩토링을 함께 다룬 책이 없다는 면에서 신선하고 종합적으로 이해할 수 있다. 쉬운 소개, 자세한 코드, 디자인 패턴과 리팩토링을 모두 찾는 독자들에게 이 책에 대한 투자가치는 “긍정적”이다. 나에겐 그렇지 못했지만 말이다.