Easy Understanding

헤드 퍼스트 디자인 패턴(개정판) 후기 본문

Dev

헤드 퍼스트 디자인 패턴(개정판) 후기

appleg1226 2022. 4. 24. 21:06

디자인패턴에는 유명한 책이 몇개 되지 않는데, 

그나마 그 중에 유명한 책이 이 헤드퍼스트 디자인패턴이라는 책이다.

 

원래 이 책은 2005년에 발매되었었고 이런 표지였다.

괜찮다고 들리는 책이 그나마 이 책과 'GoF의 디자인 패턴' 책인데, 다 너무 오래되어서 보기가 힘들긴 했다.

 

 

하지만 최근에 이 책이 개정되어서 바로 구매해서 읽어보았다.

개정판이 나오는 책이라는 것 자체가 좋은 소장가치를 가질거라고 판단해서 고민없이 사버렸다.

 

이 책에서 강조하는 게 '재치 넘치는 설명''틀에 박히지 않은 구성' 인데 전적으로 인정한다.

무슨 이런 책이 있나 싶을 정도로 구성이 독특하다.

굳이 닮은 것을 따지자면 초등학교 저학년 교과서를 보는 느낌이다.

책이 너무 착하고 친절하다. 내가 생각하는 책이란 친절해야한다의 기준을 이미 넘어버린 책이다.

 

한 패턴 내에서도 구성이 정말 다양하다.

- 디자인 패턴들을 인터뷰하는 것

- 디자인 패턴들끼리 대화/논쟁하는 것

- 중간에 가벼운 연습문제로 고민거리를 던져주는 것

- 실생활과 가까운 친근한 예제들

- 크로스워드같은 퀴즈

 

이런 것들 덕분에 확실히 책이 지루하지는 않다.

 

게다가 내용도 알차고 이해하기가 정말 쉽게 쓰여져 있다.

애초에 길고 쉽게 풀어서 쓰다보니 너무 이해하기는 쉽다.

 

지금까지 몇 가지 애매하게 이해하고 있던 패턴이 있었는데 이 책 덕분에 해당 패턴들에 대한 이해가 충분히 되었다.


딱히 단점이라고 하면 중간중간 나오는 유머가 너무 재미없다.....

아메리칸 조크라 그런지 정말 노잼인 게 몇 개 있는데 그 정도는 감수할만도 하다.

 

게다가 비슷한 디자인패턴들끼리 대화를 하면서 싸움을 붙이는 것도 많다.

전략 패턴과 상태 패턴이 투닥투닥하면서 말싸움을 하는데,

작가의 의도는 비슷한 패턴들을 비교하면서 그 장단점과 차이점을 보여주려고 구성한 듯하다.

근데 진짜 내 취향이 아니더라. 그냥 중요한 것만 읽고 넘겼다.

 

대략 요약하면 일부 코드가 나와 안 맞기는 했지만, 이해하기는 쉽고 내용도 유익했다는 것.

(그래도 딱딱하고 불친절한 책보다는 100배 낫다는 생각이다. 그런 책은 가끔씩 읽을 때 화가 날 정도니까...)

 


다만 디자인 패턴 특성상 경험에 따라서 이 책을 통해서 얻을 수 있는 인사이트가 다를 것이다. 

 

내가 취준생 시절 개발 공부 초반에도 디자인 패턴을 공부한 적이 있다.

그때도 다른 책들이나 자료들을 열심히 찾아봤던 기억이 있다.

'와 이걸 배우면 나도 개발을 할 때 여러 패턴을 적용할 수 있는 능력을 갖게 되는건가' 라고 생각했었지만 전혀 아니었다.

어차피 적용할만한 경험적 베이스가 적다보니 딱히 써먹을 수는 없었다.

어차피 스프링 프레임워크에서 시키는대로 서비스랑 컨트롤러랑 리파지토리만 만들면 되는데

어디에 디자인 패턴을 적용할지 아이디어조차 생길 여지가 없다.

다만 이 단계에서는 '이 코드는 이 패턴으로 이루어졌구나' 같은 생각 정도는 할 수 있게되며, 코드 분석력은 확실히 늘어난다.

하지만 이 단계에서는 단지 그 정도 뿐이다.

 

개발 경험이 늘고 여러 엔터프라이즈 도메인들을 경험하다보면 슬슬 디자인패턴이 쓸모있게 보이기 시작한다.

'아 이 패턴은 저번에 그 로직에 적용했으면 더 깔끔하게 해결할 수 있었겠다' 라는게 보이게 되더라.

그리고 이런 생각도 하게 된다.

'이 패턴으로 정리하면 확실히 확장성은 생기겠지만 특정 경우에는 굳이 이렇게까지 사용할 필요는 없을 것 같다' 같이

디자인 패턴에 대해서 장단점과 사용할만한 상황이 보이게 된다.

 

아마 경험이 더 늘어난다면 그 때는 또 다르게 보이려나? 그건 좀 궁금하기는 하다.

 

여튼 객체지향적인 사고와 개발에 익숙해지지 않으면 디자인패턴을 익히는 건 쉽지 않을 것이다.

인터페이스 하나 선언하지 않는 프로그래머에게 디자인패턴의 필요성은 전혀 보이지 않을 거라는 생각이 든다.

결국 디자인패턴은 객체지향과도 연결되며, 클린코드, 리팩터링 등 다른 코드 작성 방법론들과 함께 손잡고 레벨업이 되는 지식이라고 본다. 

 

개인적으로 이런 개발의 핵심 가치를 가지고 있는 책은 소장하는 게 무조건 좋다고 생각한다.

살지말지 고민하는 개발자라면 그냥 무조건 사라고 추천하고 싶다.

(애초에 이거 말고도 딱히 선택지가 적을 것 같다.)

 

추가적으로 책을 읽는 것 만으로는 의미가 없다고 판단하여

책에서 다루고 있는 디자인패턴들에 대해서 실전에서 어떻게 사용할 수 있을지 유스케이스들을 연구하고 정리해볼 생각이다.