[oop Series] 05.tradeoff
March 31, 2025
트레이드 오프
캡슐화
- 내부 구현을 외부로부터 감추기 위해서 진행한다.
- 구현이란 나중에 변경될 가능성이 높은 것을 의미한다.
- 캡슐화로 파급효과를 적절하게 조절할 수 있다.
- 이렇게 변경될 수 있는 부분을 구현이라고 부르고 상대적으로 안정적인 부분은 인터페이스라고 부른다.
- 객체 설계 시점에서 기본 아이디어는 변경 정도에 따라 구현과 인터페이스를 분리하고 외부에서는 인터페이스만 의존하도록 관계를 조절하는 것이다.
결합도와 응집도
- 결합도는 상호 의존 정도를 나타내며 다른 모듈에 대해서 얼마나 많은 지식을 갖고 있는지를 나타내는 척도다.
- 응집도는 포함된 내부 요소들이 연관되어 있는 정도를 나타낸다.
- 모듈 내의 요소들이 하나의 목적을 위해서 긴밀하게 협력한다면 높은 응집도를 가진다고 할 수 있다.
데이터 중심 설계
- 데이터 중심 설계는 행동보다 상태에 초점을 맞춘다.
- 객체의 행동에 따라 수반되는 상태를 지정해야 필요한 정보만 존재하는, 응집도가 높은 객체가 된다.
- 만일 데이터에 초점이 맞춰지면 만족스러운 캡슐화를 얻기는 문제가 있다.
트레이드 오프
- 물론 이런 설계에는 비용이 따른다.
- 인터페이스를 정의하거나 하는 식의 부수적인 부분 말이다.
- 따라서 무조건적인 객체 지향이 정답은 아니다. 말 그대로 객체 지향이므로 그 방향으로 나아가기 위해서 최선을 다하는 것이지 절대적인 것은 아니다.