본문 바로가기
도서/기타

객체지향의 사실과 오해

by 패쓰킴 2024. 7. 20.
728x90

처음 이 책을 알게된건 개발 학원에서였다.

다들 유명한 책이고 객체에 대해 잘 알려준다는 평이 많아서 읽기 시작했는데.

이제 막 개발을 시작한 나에게는 무슨 말인지 도저히 이해할 수가 없더라.

그래서 2장 정도까지 읽고 더 이상 읽지 않았다.

그렇게 몇 년이 지나고 나서야 다시 읽어보게 되었다.

 

이 책에서 가장 유명한 것은 객체의 역할, 책임, 협력에 대해 '이상한 나라의 엘리스'의 등장 인물들의 관점에서 설명 해주는 부분이다.

각 캐릭터들은 자신들의 역할과 책임을 가지고 있고 이들이 소통하면서 답을 얻는 과정을 객체간의 협력이라 말한다.

SOLID원칙이라던지 캡슐화, 다향성 등 객체의 중요한  특징들도 함께 설명해주어서 객체지향의 장점들의 특징을 함께 이해할 수 있었다.

 

처음 개발을 시작했을 때 읽었을 때에는 이렇게 잘 설명 되어 있어도 너무 복잡해 보였고 무슨 말인지 도통 이해되지 않았었는데 ..

읽으면서 내내 오 이건 클래스를 얘기해주는 거군! 5원칙을 얘기 해주는 거군! 하면서 스스로 성장하긴 했다는 깨달음에 한편으로 뿌듯했다. 

 

뒷 부분으로 넘어가서 6장 부터는 설계에 대한 내용을 다루는데

도메인 모델, 유스케이스 라는 단어가 등장하고 부터는 이해하기 너무 어려웠다. 백앤드 분야에 있는 분들은 더 잘 이해할 것 같다는 생각이 든다.

6장을 읽고 드는 생각은, 타이틀도 그렇고 초반에 지도에 대한 설명을 하면서 하는 얘기가.

아무리 잘 만든 지도라 한들 사용자 관점에서 이해하기 어렵고 사용하기 어려우면 좋은 지도가 아니라고 한다.

여기에서 이 두가지 키워드가 연결되는게 아닐까 한다.

유스케이스는 사용자가 지도를 보려는 목적을 생각해봤을 때, 지도 내에서 지역 명칭 또는 목적지 까지의 경로 등 지도를 통해 얻고자 하는 것들을 정리해 놓은 것

도메인 모델은 이 유스케이스를 도식화하여 정리 한 것

이라고 이해해도 무방하지 않을까 싶다.

정리를 이렇게 하지만 처음에 얘기했던 잘 만든 지도에 대한 문장이 핵심인 것 같다.

 

마지막 7장. 

솔직히 7장만 읽어도 될 것 같다 라는 생각이 들 정도로 정리가 되어 있다. ㅎ

그리고 가장 이 책을 읽고 감명 깊은 부분도 7장에 있었다. 

그동안 나는 개발은 설계가 반이라고 생각하면서 일해 왔었고 나름 설계에 시간을 많이 들여 잘 작성해보려 노력했었다.

설계를 잘 할수록 코드를 작성하는 시간과 비용은 줄어 든다는 생각을 했었기 때문이다.

맞는 말이다.

하지만 이 장을 읽고 하나는 알고 하나는 모르는 격이었다는 것을 깨달았다.

책에 있는 내용을 그대로 가져와 본다.

1. 구현하지 않고 머릿속으로만 구상한 설계는 코드로 구현하는 단계에서 대부분 변경된다. 설계 작업은 구현을 위한 스케치를 작성하는 단계지 구현 그 자체일 수는 없다. 중요한 것은 설계가 아니라 코드다.
따라서 협력을 구상하는 단계에 너무 오랜 시간을 쏟지 말고 최대한 빨리 코드를 구현해서 설계에 이상이 없는지, 설계가 구현 가능한지를 판단해야 한다. 코드를 통한 피드백 없이는 깔끔한 설계를 얻을 수 없다.

2. 인터페이스를 통해 실제로 상호작용을 해보지 않은 채 인터페이스의 모습을 정확하게 예측하는 것은 불가능에 가깝다. 설계를 간단하게 끝내고 최대한 빨리 구현에 돌입하라. 머릿속에 객체의 협력 구조가 번뜩인다면 그대로 코드를 구현하기 시작하라. 설계가 제대로 그려지지 않는다면 고민하지 말고 실제로 코드를 작성해가면서 협력의 전체적인 밑그림을 그려보라.

그동안 나름 설계를 한다고 하고 코드를 작성하다 보면 내 설계가 너무나도 틀렸다고 깨달을 때면, 스스로 좌절하기도 하고 자책하기도 했던 때가 많았다. 항상 선배 개발자가 없었고 혼자 일을 해오다 보니 이런 충고나 위로를 받기 어려웠다.

그런데 이 부분을 읽으면서 큰 위로를 받을 수 있었다. 내가 그동안 느꼈던 좌절감은 너무도 당연한거였고, 고생했다. 잘해왔다라는 다독임을 선배 개발자에게 받는 듯했다.

 

나와 같이 코드를 어떻게 작성하는 것이 좋은지. 어떻게 풀어 나가야 할지. 고민 많은 개발자들 이라면 한번씩 읽어 보기를 추천하고 싶다.

 

728x90

댓글