객체지향의 사실과 오해를 읽고

진영화(jin young hwa)
4 min readApr 28, 2019

--

혼자 읽지 말아야 할 책

좋은 책은 맞다, 하지만.(참고 : 저작권상 책의 내용을 정리하지 않습니다.)

우연히 참석한 트위치 라이브에서 객체지향 이야기가 나와 다시 이 책을 읽게 되었다. 처음에는 한번 가볍게 읽고 후기를 쓰려고 하다가.. 막상 정리를 하려고 하니 쉽게 되지 않아 일주일을 더 소비한 다음 한번 더 읽었다. 주변에서는 이 책을 극찬하는 분들도 많았는데, 내가 읽은 느낌은 그정도까지는 아니었다. 처음읽었을 때는 와.. 좋네.. 생각하다가 두번째 읽었을 때는 설명이 생각보다 정신없어 보였으며 아마 세번째 읽으면 넘어갈 부분과 읽어야 할 부분을 확실하게 구분할것 같다. 차라리 후반에는 동화로 예시를 들지 않았으면 좋았을 것 같았다. 억지로 설명하는 느낌이 많이 들었다.

이책을 아무에게나 권하지 말자.

이 책을 읽는다고 객체지향의 오해가 풀리기는 어렵다. 직접 해보고 다시 책을 읽고 그 말이 맞나 다른책과 비교, 고민 해야 오해가 풀릴 듯 싶다. 또한 이 책을 신입이나 개발을 처음하는 사람에게 아무런 설명없이 던져주는건 무책임한 행위에 가깝다고 생각한다. 적어도 이 책을 권하려면 책을 소개받는 사람의 성장을 기대한다고 생각했을 때 경험있는 사람이 책에 대한 내용을 같이 따라가 주거나 질문이라도 받아 주는게 맞을것 같다.

그만큼 이 책은 적어도 디자인 패턴, 또는 설계에 대한 약간의 지식을 요구한다. 그렇다고 방법이 없는것은 아니다. 좋은 동영상 강의가 있다.

위 링크강의에서 75번강의와 OOP 강의 들으면서 읽으면 도움이 된다.

책 소감을 간단히 이야기 하자면 객체지향의 목표는 실세계를 모방하는 것이 아니다, 오히려 새로운 세계를 창조하는 것이다. 부분부터 마음에 들었다. 그러나 설명을 위해 어느정도는 예를 들어야 한다는 말도 좋았다.

이후로 역할과 책임 그리고 협력에 대하여 객체를 가지고 설명한다. 자연스럽게 메시지와 메서드에 대한 설명도 곁들인다. 이후 인터페이스에 대한 설명 을 하면서 자율성과 설계 구조에 대한 생각을 추가한다. 클래스에 대한 오해도 책 중간에 풀어주려 많이 노력한 흔적이 보인다.

다음으로는 모델에 대한 설명을 한다. 이후 객체지향 설계 기법으로 책임주도 설계, 디자인패턴, 테스트 주도 개발에 대한 설명이 이어진다.

인상적인 부분은 테스트 주도 개발에 대한 설명에서 다양한 설계경험과 패턴에 대한 지식이 없는 사람에게는 테스트 주도 개발의 온전한 혜택을 누리기 어렵다는 말이 인상적이었다. 나도 그렇게 생각한다. 처음부터 TDD에 눈이 가지 않았던 이유가 이런 이유가 아니었나 싶다. 잘 알지도 못하는데 무작정 테스트케이스를 만들어 낼 수 있을 만큼 무작정 해보는건 이거야말로 사람 지치게 하는게 아닌가 생각했다. 아마도 조금이나마 디자인패턴을 공부해보고 작은거라도 직접 경험해보고 그것을 가지고 다시 수정할 때 TDD를 해 보는게 올바른 방법이 아닐까 생각한다. (이 글을 쓰는 사람에게만 해당하는 말입니다.)

이후로 책임과 메시지에 대한 설명과 함께 타입과 추상화 유스케이스 등 객체지향에 대한 저자의 생각을 잘 풀어놓고 있다. 또한 다형성을 책 지면에 많이 강조했다. 캡슐화도 강조하였지만 책 전체 비중을 놓고 볼 때 다형성을 강조한 부분이 많았다.

개인적으로, 내용 중에서 가장 인상깊었던 부분은 TDD에 대한 설명과 177페이지 상단의 유일하게 변하지 않는것은 모든것은 변한다는 사실 뿐이다. 라는말이 참 좋았다.

이 책의 좋았던 점은 코드에 대한 부담없이 그림과 설명으로만 객체지향을 설명하고자 노력했다는 부분이고, 이 책의 단점은 그림과 설명으로 책의 내용을 구성하다 보니 중복되거나 부담스러울 정도로 난해한 설명이 조금씩 들어 있었다는 점이다. 머리속에 다 정리할 능력이 되지 않아 메모장을 옆에 두고 주요 개념을 메모하면서 2주동안 즐겁게 읽었으며, 이제 올해 설계라는 것을 잘 공부해본 다음 내년에 다시한번 읽어보고 어떤 느낌이 드는지 알아보는것도 재미있을것 같다.

--

--