우아한테크코스 레벨1 과정에서 데일리조끼리 객체지향과 디자인패턴 스터디를 진행하였고,
덕분에 이 책을 완독할 수 있었다 ㅎㅎ
좋았던 점
결론부터 말하자면 java 개발을 병행하면서 OOP 개념을 익히기 매우 좋았던 책이었다.
책 제목이 '디자인 패턴'이라 디자인패턴만 주구장창 공부할까봐 걱정 중이라면, 그 걱정을 저 멀리 내던져도 좋을 듯하다.
실제로 이 책은 디자인패턴에 관해서는 chapter 7에서 잠깐 소개하는 정도로 알려준다.
그 외에 chapter 2~6까지는 다형성, 추상화와 같은 oop 기초개념들을 확립할 수 있게 해주기 때문에 디자인패턴 책이라기보단, oop 책에 훨씬 가깝다고 생각한다.
chapter 2 스터디 포스팅: https://kth990303.tistory.com/274?category=852709
나는 디자인패턴보단 oop 개념을 익히려고 이 스터디에 참여한 것이었기 때문에 굉장히 만족스럽게 책을 완독할 수 있었다.
+) 스터디원들과 함께 이 책을 공부하면 더 좋을 듯하다.
책을 읽고 나서 스터디원들과 함께 토론하면서 개발에 직접 적용한 케이스를 얘기하고 나니 더 오랫동안 기억에 남는 느낌을 받았다.
거기에 추가로, 이러한 oop 방법이 정말로 좋은 것인지 토론하는 과정을 거쳐 장단점을 더욱 명확하게 확립할 수 있었다.
아쉬웠던 점
chapter 5~6의 예제 난이도가 좀 높아 한번에 이해하기 어려웠다는 평이 많았다.
스터디원 대부분이 chapter 5부터 예제를 이해하는 난이도가 꽤 올라갔다고 이구동성으로 말하기도 했다.
또한, 서비스 로케이터 방식을 먼저 소개해준 후에 의존성 주입 부분을 설명해주면 어땠을까 생각이 들기도 했다.
서비스 로케이터의 단점을 먼저 설명해준 후, 의존성 주입 방식 중 설정 메서드 방식과 생성자 주입 방식으로 그 단점을 극복할 수 있다는 점을 설명해주었다면 특정 단점을 어떻게 극복했는지 더 와닿았을 것 같다는 생각이다.
책에서 생성자 주입 방식을 먼저 설명하니 '그래서 이게 어떤 점이 상대적으로 더 좋다는거지?' 라는 생각을 하기도 했다.
추천 대상
- java 문법 학습 후 추가적인 자바 개발 경험이 있는 학생
- java 주니어 개발자
사실 이 책은 우아한테크코스 과정을 들어오기 전, 학교 도서관에서 빌려서 읽어본 적이 있었다.
그 때 당시에 내 실력은 학교수업으로 '객체지향프로그래밍'수업을 들어 oop 개념이 어느 정도 있(었다고 생각했)었고,
java를 이용해야 했었던 '오픈소스sw입문' 등의 수업들을 들으면서 자바 문법 또한 어느정도 잡혀 있었던 상태였다.
그럼에도 불구하고, 당시에 이 책을 읽었을 때는 크게 와닿지 않았다.
다형성, 추상화를 해라. 값을 꺼내지 말고 메시지를 던져라.
결국은 했던 얘기를 또하고 또하는 느낌이었다.
그러나 그것은 내 착각이었다.
실제로 코딩하면서 개발할 때에 getter 메서드로 값을 꺼내려고 하고, 단일 책임 원칙을 지키지 않고 메서드 내에서 여러 기능을 추가하고 있는 내 모습을 흔하게 볼 수 있었다.
출처: https://kth990303.tistory.com/291
실제로 개발하면서 우테코 리뷰어님들께 피드백을 받으면서 수정하고 리팩터링하는 과정을 거치면서 이 책을 다시 한 번 읽는 시간을 가졌다.
'아는 만큼 보인다'라는 말이 정말 맞았던걸까.
우테코 과정을 진행하면서 이 책을 읽고 나니, 예전과는 다르게 이 책의 내용이 굉장히 밀도있게, 그리고 난이도 있게 느껴졌다.
(우테코가 짱이다! 라는 말이라기 보단, 개발을 병행하면서 많이 경험을 해볼수록 이 책에서 얻는 것이 많을 것이라는 얘기다.)
그만큼 지식 습득량도 예전에 읽었을 때에 비해 상당히 늘어났다.
이제는 getter 메서드를 쓸 때 왜 주의해야 하는지, 인터페이스가 왜 좋은지 조금이나마 말할 수 있게 됐다.
getter 메서드는 특정 객체의 값을 꺼내 다른 객체에서 사용하는 행위를 유발한다.
따라서 SRP를 위반할 가능성을 높이기 때문에 상당히 유의해야 한다.
그리고 인터페이스, 추상 클래스를 활용하여 OCP를 지키면 이후에 요구사항 수정 및 변경이 발생할 때에, 의존성 주입하는 부분만 변경해주면 되기 때문에 변경에 유연한 코드를 만들 수 있다.
이러한 지식들은 java 문법을 갓 뗀 개발자들보단, 간단한 프로젝트를 하면서 두드려맞으면서 경험해본 사람들에게 유익하리라 생각한다.
따라서 이 책은 java 문법을 갓 뗀 개발자에겐 추천하지 않으며 (크게 와닿는 것이 없을 수 있다.),
객체지향 프로그래밍으로 간단한 개발을 진행해본 경험이 있는 개발자에게 추천한다 :)
우아한테크코스 레벨1 필독서다운 책이었다.
실제로 우테코 미션과 이 책의 순서가 상당히 비슷하다는 생각을 하기도 했다.
(로또 미션 : chapter 3 다형성과 추상 타입)
(블랙잭 : chapter 4 재사용: 상속보단 조립, chapter 5: 설계 원칙: solid)
개발과 병행한 덕분에 많은 지식을 뽑아냈다고 생각한다. (물론 좀 더 경험을 쌓고 다시 이 책을 읽으면 다른 느낌을 받을 수도 있겠다 ㅎㅎ)
이 책으로 스터디를 진행해준 호호, 그리고 스터디원들에게 감사함을 느낀다 :)
'독후감 > IT 서적' 카테고리의 다른 글
[후기] DDD START! 도메인 주도 설계 구현과 핵심 개념 익히기 (2) | 2022.12.29 |
---|---|
[후기] SQL 첫걸음 (5) | 2022.11.12 |