객체지향의 사실과 오해 리뷰

Aiden Shin·2020년 3월 18일
1
post-thumbnail

이 책을 읽게 된 계기

최근 실무에서 고민되는 부분이 있었다. 패키지는 어떻게 구성하는 것이 좋을까..? Service는 어떻게 나누는 것이 좋을까?
답을 얻기 위해 이리저리 찾아보던 중 우아한형제들에서 진행한 [우아한테크세미나] 190620 우아한객체지향 by 우아한형제들 개발실장 조영호님을 보게 되었다. 너무 좋은 세미나였다. 이런 세미나를 공짜로 볼 수 있다니.. 패키지와 객체의 의존관계에 대해 생각해보게 되었고 평소 실무에서 고민하던 것들에 대해서도 많은 해답을 얻을 수 있었다. 그래서 세미나를 진행하셨던 조영호님의 책을 찾아보게 되었고, 객체지향의 사실과 오해라는 책을 접하게 되었다.


리뷰

우선 객체지향의 사실과 오해에는 코드가 거의 나오지 않는다. 우리가 잘 아는 이상한나라의 엘리스 이야기를 통해 객체지향에 대해 우리가 오해하고 있는 사실들에 대해 이해가 잘 되도록 설명한다.

책을 읽고 처음 들었던 생각은 어디가서 객체지향에 대해 아는척하지 말자였다.. 그 정도로 책에서는 우리가 객체지향에 대해 잘못 알고 있었던 것에 대해 잘 설명하고 있다.

객체지향은 현실에 있는 객체들을 프로그래밍으로 일반화하는 것이 아니다.
객체지향은 새로운 세계를 창조하는 것이다. 왜냐하면 현실 세계와 프로그래밍 세계는 다를 수밖에 없다. 내가 음료를 마시는 것을 예를 들어보자

현실 : 내가 음료를 마신다.
프로그래밍 : 내가 음료에게 음료를 마시겠다고 요청 -> 음료는 자신의 음료 양을 줄임

현실에서는 내가 그냥 음료를 마시는 것으로 끝난다. 하지만 프로그래밍에서는 나도 객체이고 음료도 객체이다. 그러므로 나는 직접 음료의 양을 줄일 수 없고 음료에게 마시겠다고 메시지를 보내면 음료가 자신의 양을 줄인다. (음료는 요청에 따라 자율적으로 역할을 수행)


이 책에서는 객체의 역할, 책임, 협력을 통해 객체를 설명한다. (역할과 책임이 명확하면 메시지를 통해 협력할 수 있다)

객체는 상태와 행위를 함께 가지고 있으며 행위가 상태를 변경한다. 그러므로 상태를 먼저 정의하는 것이 아니라 객체가 다른 객체와 어떤 메시지를 주고 받을지 행위가 먼저 정해지고 그것을 토대로 상태, 속성을 결정해야 한다.

최근에 Service를 어떻게 나눌 것인지에 대한 고민을 했었다. 개인적으로 행위(Action)을 기준으로 나누는 것이 좋을 것 같다는 결론 내렸었는데 이 책을 읽고 좀 더 명확한 답을 얻을 수 있게된 것 같다.


책임 주도 설계, 객체를 자율적인 존재로 인식, 기능과 구조를 구분하고 녹여내기 등 모든 내용들이 알기 쉽게 설명되어 있었다. 개인적으로 평소 고민하던 부분들에 대해 많은 답을 얻게 해준 책이다. 실무에서 어느정도 설계에 대한 고민을 해본 개발자들이 읽는다면 많은 도움과 영감을 얻을 수 있을 것 같다.

조영호님의 오브젝트 라는 책도 읽어봐야겠다.

profile
예전 블로그: https://shinilhyun.github.io/

0개의 댓글