객체에게 할당되어야 하는 책임의 수준은 자율적이어야 한다.
이 말은 객체 자신이 책임을 처리하는 방식을 자율적으로 처리해야 한다는 의미이며 누군가로부터 그 책임을 처리하는 방식을 전달받는 것은 객체지향에서의 객체에게 어울리지 않는 방식이라는 것이다.
엘리스의 재판에서의 역할을 구분하여 보았을 때 판사, 재판 도우미, 증인으로 1차적인 협력이 진행된다.
책임을 할당하기 전 무엇을 조심해야 하고 기피해야 하는지 어떻게 책임을 할당하는 것이 좋을지 보자.
1. 너무 추상적인 책임
책임을 선택할 때 포괄적이고 추상적인 책임을 줄 수 있다. 이는 극한의 자율성을 부여하는 것과 같은 맥락이지만 협력의 의도를 명확하게 표현하지 못할 정도로 추상적인 것도 문제라고 한다.
협력을 하기 위한 책임의 수행 방법을 제한하는 것도 문제, 포괄적이고 추상적인 책임을 부여하는 것도 문제.
왜?
예시를 보자. 이상한 나라의 엘리스에서 왕은 판사의 역할을 하며 재판을 진행해야 하는 책임이 존재하며, 증인 역할을 하는 모자장수는 증언을 할 책임이 존재한다.
여기서 모자장수가 포괄적이고 추상적인 (증언을 할) 책임을 부여받았다고 생각해보자.
왕의 메시징을 통해 모자장수는 요청을 받고 그에 따른 응답을 주어야 한다. 이때 "증언"대신 좀 더 포괄적인 "설명"이라는 책임을 받았다면 어떻게 될까?
모자장수는 무엇을 설명해야 하는가라는 문제가 발생한다. 이는 협력의 의도를 파악하지 못한 문제가 발생하는 것으로 보인다.
추상적이고 포괄적인 책임은 협력을 매우 유연하게 재사용할 수 있도록 도와준다. 어느 협력에서든지 사용할 수 있기 때문이다. 그러나 책임은 협력에 참여하는 의도를 명확하게 설명할 수 있는 수준 안에서 추상적이어야 한다.
"설명" 대신 "증언"이라는 책임은 증인의 자율성을 보장할 수 있을 정도로 추상적이며 동시에 협력의 의도를 뚜렷하게 표현할 수 있을 정도로 매우 구체적이기에 이는 훌륭한 책임이라고 할 수 있다.
다만 어떤 책임이 자율적인지 판단하는 기준은 협력의 문맥에 따라 다르다는 사실을 잊으면 안 된다고 한다.
이는 맞는 말이다. 재판이라는 협력에서의 증언하라는 충분히 추상적이고 의도를 갖는 책임이지만 다른 상황에서는 설명하는 책임이 좀 더 자율적인 책임이 될 수 있다.
이는 설계 중인 협력이 무엇인가에 따라 달라지기에 협력을 설계하는 과정에서 협력을 제대로 이해하는 것이 매우 중요해 보인다.
그럼 자율적인 책임을 나타내는 특성은 무엇인가? 무엇이 자율적인 책임이라고 할 수 있는지 알아야 할 것 같다.
저자는 객체의 자율적인 책임의 특징은 "어떻게" 해야 하는 것이 아닌 "무엇을" 해야 하는가를 설명한다는 것이다.
책임을 통해 객체를 파악할 수 있도록 설계라는 말인지도 모르겠다.
이번 장에서 독자에게 전달하려는 의도는 다음과 같아 보인다.
개발자에게 주어진 맥락을 충분히 파악하고 이를 바탕으로 가장 적합한 책임을 찾을 수 있는 안목을 찾아야 한다.
그리고 적합한 책임을 찾았다면 이 책임을 객체가 "어떻게" 해야 하는지를 설명하는 것이 아닌
"무엇을" 책임지고 해야 하는지 설명하도록 나타내야 한다는 것으로 보인다.
'독서에서 한걸음' 카테고리의 다른 글
Clean Code .Part4 (0) | 2022.04.09 |
---|---|
Clean Code .Part3 (0) | 2022.04.07 |
Clean Code .Part 2 (0) | 2022.04.06 |
도메인 (0) | 2022.04.01 |
메시지 (0) | 2022.03.31 |
댓글