응집도
- 모듈 내부의 요소들이 서로 관련되어 있는 정도
- 하나의 모듈이 단일 목적 또는 책임을 얼마나 잘 수행하는지를 나타냄
중요성
- 높은 응집도는 모듈의 독립성과 재사용성을 향상시킴
- 유지보수성과 이해도를 높임
- 변경의 영향을 최소화하고 테스트를 용이하게 함
응집도의 유형(낮은 순에서 높은 순)
- 우연적 응집도
- 모듈 내 요소들 사이에 아무런 의미 있는 관계가 없음
- 논리적 응집도
- 시간적 응집도
- 특정 시점에 함께 실행되는 기능들을 모아놓은 경우
- 절차적 응집도
- 특정 수행 순서로 관련된 요소들을 모아놓은 경우
- 통신적 응집도
- 동일한 입력과 출력을 사용하는 요소들을 모아놓은 경우
- 순차적 응집도
- 한 요소의 출력이 다른 요소의 입력으로 사용되는 경우
- 기능적 응집도
- 모듈의 모든 요소가 단일 잘 정의된 목적을 위해 작동하는 경우
- 가장 높은 수준의 응집도
높은 응집도를 위한 설계 원칙
- 단일 책임 원칙 준수
- 관련 기능을 그룹화
- 불필요한 기능 제거 또는 분리
- 인터페이스 분리 원칙 적용
응집도와 결합도의 관계
- 일반적으로 높은 응집도는 낮은 결합도로 이어짐
- 응집도가 높은 모듈은 다른 모듈과의 의존성이 적어짐
높은 응집도를 만들기 위해선 어떻게 해야할까?
- 지속적인 리팩토링과 설계 개선이 필요
- 모듈의 목적을 명확히 정의해야함
- 관련 없는 기능은 분리
- 단일 책임 원칙을 준수하는 것이 중요