본문 바로가기
Develop/Design

추상적인 책임 vs 상세한 책임

by 코딩의성지 2022. 10. 25.

앞선 글들에서 객체지향 설계의 품질은 책임을 어떻게 설정하는가에 달려있다고 했다.
객체지향 설계를 하다보면 책임의 레벨을 어떻게 설정해야할지 고민할 때가 올 것이다.

오늘은 어떤 수준의 책임을 만들어내는 것이 적합한지에 대해 이야기 해보고자 한다.

1번 상황

위의 상황을 보자. 이와 같은 경우는 책임에 대한 자율성이 높지만 너무 추상적인 책임이다. 이러한 경우에는 자율성이 높은 만큼 잘못된 의도대로 책임이 수행되지 않을 수 있다.

2번 상황

위와 같은 경우는 1번과는 다르게 아주 상세한 수준으로 구현이 되었다. 이렇게 하면 정확하게 의도한대로 책임을 수행하긴 하지만 책임에 대한 자율성이 제한된다. 마치 신입직원(?)처럼 팀장에게 의존할 수 밖에 없는 형태이다.

3번 상황

1번 상황에서의 일하라라는 책임은 너무나 추상적인 형태의 책임이다. 실제로 여러분이 이런말을 팀장으로 부터 듣는다고 생각해보자. 만약 이런 "일하라" 라는 지시를 들으면 "내가 개발을 해야하나? 아니면 문서 작업을 해야하나?" 이렇게.. 무슨 일을 해야하는지 판단하기가 쉽지않다. 즉 요청의 의도를 파악하기 어렵다는 말이다.

추상화도 추상화 나름이다. 의도가 명확하지 않으면 오히려 추상화가 객체지향을 방해한다.

이러한 측면에서 3번의 상호아은 적당하게 자율성을 보장하면서도 적당하게 추상적인 책임이다.
자율성을 보장할 수 있게 추상적이면서도 협력의 의도를 뚜렷히 알 수 있을 정도로 구체적이다.

이는 how 보다는 what 에 집중한 결과이다. 팀장은 어떻게 개발할지에 대해서는 전혀 관심이 없다. 단지 무엇을 해야할지만 팀원에게 명확하게 알려주는 것이다.

상황에 따라서는 1번이나 2번 상황이 더 효과 적일때도 있다. 알아서 일을 찾아서 잘하는 경력직에게는 1번의 지시가 훨씬 효율적일 수 있고, 아무것도 모르는 인턴 직원에게는 2번 상황이 훨씬 효율적일 것이다.

즉 상황에 따라서 책임의 범위가 달라짐을 주의하며 책임을 설계하자.

반응형

댓글