독후감/IT 서적

[후기] 개발자가 반드시 정복해야 할 객체지향과 디자인 패턴

kth990303 2022. 4. 14. 14:47
반응형

우아한테크코스 레벨1 과정에서 데일리조끼리 객체지향과 디자인패턴 스터디를 진행하였고,

덕분에 이 책을 완독할 수 있었다 ㅎㅎ


좋았던 점

 

결론부터 말하자면 java 개발을 병행하면서 OOP 개념을 익히기 매우 좋았던 책이었다.

책 제목이 '디자인 패턴'이라 디자인패턴만 주구장창 공부할까봐 걱정 중이라면, 그 걱정을 저 멀리 내던져도 좋을 듯하다.

실제로 이 책은 디자인패턴에 관해서는 chapter 7에서 잠깐 소개하는 정도로 알려준다.

그 외에 chapter 2~6까지는 다형성, 추상화와 같은 oop 기초개념들을 확립할 수 있게 해주기 때문에 디자인패턴 책이라기보단, oop 책에 훨씬 가깝다고 생각한다.

 

chapter 2 스터디 포스팅: https://kth990303.tistory.com/274?category=852709 

 

[220221] 호호 스터디_ 객체지향과 디자인 패턴 Chapter 2

데일리 미팅에서 호호 크루가 '객체지향과 디자인 패턴' 책 스터디를 주최하여 참여를 신청했다 :) 앞으로 호호 스터디를 통해 객체지향과 디자인패턴 책을 읽고 배우며 느낀 점들을 여기에 기

kth990303.tistory.com

나는 디자인패턴보단 oop 개념을 익히려고 이 스터디에 참여한 것이었기 때문에 굉장히 만족스럽게 책을 완독할 수 있었다.

 

+) 스터디원들과 함께 이 책을 공부하면 더 좋을 듯하다.

책을 읽고 나서 스터디원들과 함께 토론하면서 개발에 직접 적용한 케이스를 얘기하고 나니 더 오랫동안 기억에 남는 느낌을 받았다.

거기에 추가로, 이러한 oop 방법이 정말로 좋은 것인지 토론하는 과정을 거쳐 장단점을 더욱 명확하게 확립할 수 있었다.


아쉬웠던 점

chapter 5~6의 예제 난이도가 좀 높아 한번에 이해하기 어려웠다는 평이 많았다.

스터디원 대부분이 chapter 5부터 예제를 이해하는 난이도가 꽤 올라갔다고 이구동성으로 말하기도 했다.

 

또한, 서비스 로케이터 방식을 먼저 소개해준 후에 의존성 주입 부분을 설명해주면 어땠을까 생각이 들기도 했다.

서비스 로케이터의 단점을 먼저 설명해준 후, 의존성 주입 방식 중 설정 메서드 방식과 생성자 주입 방식으로 그 단점을 극복할 수 있다는 점을 설명해주었다면 특정 단점을 어떻게 극복했는지 더 와닿았을 것 같다는 생각이다.

책에서 생성자 주입 방식을 먼저 설명하니 '그래서 이게 어떤 점이 상대적으로 더 좋다는거지?' 라는 생각을 하기도 했다. 


추천 대상

- java 문법 학습 후 추가적인 자바 개발 경험이 있는 학생

- java 주니어 개발자

 

사실 이 책은 우아한테크코스 과정을 들어오기 전, 학교 도서관에서 빌려서 읽어본 적이 있었다.

그 때 당시에 내 실력은 학교수업으로 '객체지향프로그래밍'수업을 들어 oop 개념이 어느 정도 있(었다고 생각했)었고, 

java를 이용해야 했었던 '오픈소스sw입문' 등의 수업들을 들으면서 자바 문법 또한 어느정도 잡혀 있었던 상태였다.

 

그럼에도 불구하고, 당시에 이 책을 읽었을 때는 크게 와닿지 않았다.

다형성, 추상화를 해라. 값을 꺼내지 말고 메시지를 던져라.

결국은 했던 얘기를 또하고 또하는 느낌이었다.

 

그러나 그것은 내 착각이었다.

실제로 코딩하면서 개발할 때에 getter 메서드로 값을 꺼내려고 하고, 단일 책임 원칙을 지키지 않고 메서드 내에서 여러 기능을 추가하고 있는 내 모습을 흔하게 볼 수 있었다.

우테코 블랙잭 미션에서 getter 메서드를 잘못 사용하여 피드백을 받았었다.

출처: https://kth990303.tistory.com/291

 

[220323] 블랙잭 미션 피드백을 통해 배운 점

이번 블랙잭 미션이 끝났다! 확실히 자동차 경주 미션, 로또 미션에 비해선 난이도가 올라간데다가, 리뷰어님께서 굉장히 많이 핀초리  피드백을 해주셔서 포스팅할 거리도 정말 많았다. (1단계

kth990303.tistory.com

실제로 개발하면서 우테코 리뷰어님들께 피드백을 받으면서 수정하고 리팩터링하는 과정을 거치면서 이 책을 다시 한 번 읽는 시간을 가졌다.

'아는 만큼 보인다'라는 말이 정말 맞았던걸까.

우테코 과정을 진행하면서 이 책을 읽고 나니, 예전과는 다르게 이 책의 내용이 굉장히 밀도있게, 그리고 난이도 있게 느껴졌다.

(우테코가 짱이다! 라는 말이라기 보단, 개발을 병행하면서 많이 경험을 해볼수록 이 책에서 얻는 것이 많을 것이라는 얘기다.)

그만큼 지식 습득량도 예전에 읽었을 때에 비해 상당히 늘어났다.

이제는 getter 메서드를 쓸 때 왜 주의해야 하는지, 인터페이스가 왜 좋은지 조금이나마 말할 수 있게 됐다.

 

getter 메서드는 특정 객체의 값을 꺼내 다른 객체에서 사용하는 행위를 유발한다.

따라서 SRP를 위반할 가능성을 높이기 때문에 상당히 유의해야 한다.

그리고 인터페이스, 추상 클래스를 활용하여 OCP를 지키면 이후에 요구사항 수정 및 변경이 발생할 때에, 의존성 주입하는 부분만 변경해주면 되기 때문에 변경에 유연한 코드를 만들 수 있다.

 

이러한 지식들은 java 문법을 갓 뗀 개발자들보단, 간단한 프로젝트를 하면서 두드려맞으면서 경험해본 사람들에게 유익하리라 생각한다.

따라서 이 책은 java 문법을 갓 뗀 개발자에겐 추천하지 않으며 (크게 와닿는 것이 없을 수 있다.),

객체지향 프로그래밍으로 간단한 개발을 진행해본 경험이 있는 개발자에게 추천한다 :)


우아한테크코스 레벨1 필독서다운 책이었다.

실제로 우테코 미션과 이 책의 순서가 상당히 비슷하다는 생각을 하기도 했다.

(로또 미션 : chapter 3 다형성과 추상 타입)

(블랙잭 : chapter 4 재사용: 상속보단 조립, chapter 5: 설계 원칙: solid)

 

개발과 병행한 덕분에 많은 지식을 뽑아냈다고 생각한다. (물론 좀 더 경험을 쌓고 다시 이 책을 읽으면 다른 느낌을 받을 수도 있겠다 ㅎㅎ)

이 책으로 스터디를 진행해준 호호, 그리고 스터디원들에게 감사함을 느낀다 :)

 

 

반응형