728x90
변경 관점에서의 결합도
변경 관점에서 결합도는 외부의 모듈이 변경될 때 함께 변경되는 정도를 의미한다.
- 높은 결합도: 외부의 모듈이 변경될 때 함께 변경되는 빈도가 높을 경우
- 낮은 결합도: 외부의 모듈이 변경될 때 함께 변경되는 빈도가 낮을 경우
결합도는 의존성이 존재한다는 전제하에서 변경에 의한 영향의 정도를 표현한다. 의존성이 변경 가능성의 존재 유무를 의미한다면, 결합도는 변경이 얼마나 자주 발생하는지를 의미하므로, 상대적이다.
의존성 제어 원칙(결합도 낮추기)
자주 변하는 것과 변하지 않는 것을 분리하라, 그리고 자주 변하지 않는 것에 의존하도록 해야 한다.

- A -> B에 의존한다면 B에서 자주 변하지 않는 안정적인 부분을 자주 변하는 불안정한 부분으로부터 코드 안에서 명확히 분리한다.
- A가 B의 안정적인 부분에만 의존하도록 의존성을 제어한다.
- 이때 B에서 자주 변하지 않는 안정적인 부분을 추상화라고 부른다.
- 자주 변하고 불안정적인 부분을 구현이라고 부른다.
- 이렇게 추상화에 의존하도록 의존성을 제어하면, 구현이 변경되더라도 추상화를 경계로 변경의 여파가 외부로 전파되는 것을 막을 수 있다.
참고: 협력에서는 추상화에 의존해서 개발하는 방식을 인터페이스에 의존해서 개발한다..라고 한다.
EX) 절차지향 방식과 객체지향 방식 비교
절차지향 방식 비교

- 구현에 속하는 코드를 변경한다면 인터페이스인 getter/setter가 구현이 변경되어야 한다.
- 사실, getter/setter 같은 경우 내부 구현을 변경할 때 함께 변경이 되기 때문에 인터페이스가 아닌 구현에 속하는 것이다.
- 즉, 외부에서 인터페이스에 의존하는 것이 아닌 구현에 의존하고 있는 것이다.
객체지향 방식 비교

- 구현에 해당하는 필드의 타입을 변경하더라도 객체지향 설계에서는 인터페이스에 의존하고 있기 때문에 수정할 필요가 없다.
변경하기 쉬운 코드를 위한 객체지향 설계원칙은 객체의 행동을 먼저 구현하고 행동에 필요한 데이터를 나중에 선택하면 된다.
728x90
'오브젝트' 카테고리의 다른 글
| Ch05. 변경과 설계 - 설계 평가하기 (0) | 2024.10.12 |
|---|---|
| Ch05. 변경과 설계 - 캡슐화 (0) | 2024.10.12 |
| Ch05. 변경과 설계 - 응집도 (0) | 2024.10.12 |
| Ch05. 변경과 설계 - 변경과 설계 (0) | 2024.10.12 |
| Ch05. 객체지향 구현 - 애플리케이션 객체 추가하기 (0) | 2024.10.09 |