[객체지향의 사실과 오해] 1장 협력하는 객체들의 공동체
[객체지향의 사실과 오해] 1장 협력하는 객체들의 공동체

[객체지향의 사실과 오해] 1장 협력하는 객체들의 공동체

Tags
조영호
OOP
Java
Published
May 27, 2023
Author
lkdcode

1장 협력하는 객체들의 공동체


 

🚀 시너지를 생각하라, 전체는 부분의 합보다 크다

전체는 우리의 서비스가 될 것이고, 시너지는 객체들을 뜻한다. 나는 여태 객체지향을 책임 중심의 역할분담이라 생각해왔다. 실세계를 모방하던 하지 않던 하나의 책임이 주어지고 그 책임을 올곧게 수행하는 역할로서 말이다. 가능한 최소한의 책임을 주었고 메세지 또한 책임을 묻지 않고 실행하도록 던졌다. 1장에서의 이야기는 다시 여러 기준들을 만들어 주었고 올바른 생각을 할 수 있는 방향성을 얻게 되었다.
 

🎯 1. 책임은 역할안에 종속되어있다


그동안 책임과 역할을 따로 두고 보았다면 이 책에서는 하나로 결합하여 이야기를 하였다. 역할이라는 큰 구조 안에 여러 가지 요소들 중 하나가 ‘책임’이었다. 이 부분이 색다른 관점으로 코드를 보게 해주었는데 가령 이전까지는 하나의 메서드(메세지)를 만들고 더해가면서 클래스를 키워갔다면 지금은 역할이라는 울타리 안에 작은 책임들로 나누는 방식도 생각할 수 있게 되었다.
 

🎯 2. 역할은 대체 가능성을 의미한다.


우리는 클래스와 메서드를 나누면서 이미 객체지향 관점으로 코드를 구현하고 있을 것이다. 그중 하나인 의존성을 끊어라 를 한 줄로 요약한 구문이라 생각한다. 대체가 가능하기 때문에 직접적으로 클래스를 아는 것이 아닌 그 클래스의 역할을 알게 함으로서 의존성을 끊을 수 있고 객체를 좀 더 뚜렷하게 볼 수 있게 되었다. 대체가 가능하는 건 하나의 부속품만 바꾸어도 전체 서비스를 실행하는 데 있어 문제가 없다는 이야기와도 같다.
 

🎯 3. 지향한다는 것은 방향성에 대한 이야기이다.


어렵다고 느껴지는 이유 중 하나는 확실한 답을 이야기하는 것이 아니라 방향성에 대한 이야기이기 때문이라 생각한다. 애매모호한 정의들이 여러 혼동을 가져오기도 하고 추상적으로 다가오게 된다. 하지만 적어도 1장에서는 혼동을 막아주는 여러 지침서들을 알려준 것 같다. 협력, 역할, 책임, 본질 등.. 적어도 내가 짠 코드에 대한 근거는 말할 수 있게 되었다.
 

🎯 4. 객체에게 직접 묻다.


객체도 분명히 하고 싶은 것, 하기 싫은 것들이 있다. 만약 하나의 객체에게 바라는 책임들이 많다면 그 객체는 일을 하기 싫어할 것 같다. 또 너무 많은 메시지는 객체 입장에서 참견처럼 느껴질 수도 있고 아무 메시지 없이 일 잘하기를 바란다면 객체는 무얼 해야 할지 모를 수도 있다. 적당한 메시지, 적당한 책임, 적당한 바람 등 유기적으로 상호작용하는 객체에게 넌 어떤 객체인지 물어보면 좀 더 명확해지지 않을까 싶다.
 
🎯QnA

객체지향을 ‘책임 중심의 역할 분담’ 으로 생각했던 나, 비정상인가요?