[객체지향의 사실과 오해] 04장: 역할, 책임, 협력
엘리스의 이야기로 시작한다. 재판과정을 다루면서 각각의 역할, 책임, 협력에 대해 다루고 있다.
챕터의 앞부분을 읽으면서 들었던 생각은, '책임이라는 단어를 굳이 분리해놓은 이유는 무엇일까?' 이다. 객체에 어떤 역할을 부여한다면 그 자체로서 그에 대한 책임이 존재하는 것은 아닐까. 왜 굳이 책임이라는 단어로 같은 이야기를 반복하고 있을까 라는 생각을 했다.
챕터의 중반부를 지나면서, 그 오해가 어느정도는 풀렸다. 책임과 역할은 필요충분조건이 아닌 것으로 보고 있었다. 하나의 역할이 여러개의 책임을 가질 수 있고, 하나의 책임이 여러 개의 역할이 가지고 있을 수 있는 관계로 보았다. 또한, 어떤 책임을 가지고 있는지도 중요하지만 무엇보다 중요한 것은 객체의 행동에 초점을 맞추어야 하는 것으로 방향을 다르게 볼 것을 추천하였다.
하나의 객체는 메세지를 통한 요청을 받고, 그 요청에 대해 어떤 행동, 응답을 하는 지에 초점을 두어야 한다고 말하고 있다. 물론 생각해보면 다르게 생각해야 하는 것도 아니다. 그 행동과 응답 자체가 그 객체의 역할이자 책임이 될 수 있는 것이니까. 이 챕터는 자칫하면 이론이 오히려 사용을 어렵게 만드는, 마치 실용적으로 간단하게 처리할 수 있는 부분을 이념대립으로 처리하지 못하고 있는, 정치권과 같은(?) 상황이 벌어질 수 있는 챕터라고 본다.
객체의 설계 시 행동을 초점으로 하고, 그 초점을 기준으로 역할과 책임을 정리한다. 정도로 마무리하고 깊게는 생각하지 않는 것이 좋겠다.
또한 세가지 개발방법론을 다루고 있다. 이 세가지 방법론은 독립적인 것이 아니다.
각각 모든 단계에서 염두할 것을 말하고 있다.
그 방법은, 책임주도설계 (RDD), 패턴, 테스트주도설계(TDD) 세 가지를 말하고 있다. 책임 주도 설계는 오늘 챕터에서 이야기한 내용 그대로 인 것으로 보인다. 객체에 메세지에 대한 행동과 응답으로 책임을 부여하고, 그것을 구현하는 과정에서 책임이 확실하므로 패턴을 적용한다. 그리고 그 종합적인 개발 과정에서 책임을 이미 알고 있으므로 TDD 개발이 가능하다.
멋진 개발 방법이나, 내 수준으로서는 아직 불가능하다. 다음 책은 신입 때 읽었던 패턴에 관한 책을 읽어야 겠다는 마음을 들게 하였다.