오브젝트

Ch05. 변경과 설계 - 응집도

webmaster 2024. 10. 12. 17:32
728x90

변경 관점에서의 응집도

변경 관점에서의 응집도는 모듈 내부의 요소들이 함께 변경되는 정도를 의미한다.

  • 높은 응집도 - 모듈 전체의 코드가 동일한 시점에 동일한 속도록 변경된다.
  • 낮은 응집도 - 모듈 요소들이 서로 다른 시점에 서로 다른 속도로 변경된다..

EX) 절차지향 설계와 객체지향 설계에서의 응집도 차이

절차지향 설계에서는 할인 정책의 종류나 할인 금액을 계산하는 방법이 변경할 때/ 할인 조건의 종류나 할인 여부를 판단하는 방법이 변경될 때, 변경이 된다. 즉, 서로 다른 시점에 서로 다른 속도로 변경되는 2개의 메서드를 포함하고 있다. 

객체지향 설계에서는 각 클래스는 단 하나의 이유 때문에 변경이된다. 

 

응집도는 단일 책임 원칙(SRP)와도 연관이 있는데, 단일 책임 원칙은 응집도가 높은 클래스를 만들기 위해 서로 다른 이유로 변경되는 코드를 서로 다른 클래스로 분리해야 한다는 사실을 강조한다.

응집도를 높이기 위한 분리 기준

  • 클래스 전체가 아니라 일부 메서드와 속성만 변경하고 있다면 응집도가 낮은 것이다.
    • 변경에 이유에 따라 수정되는 부분을 별도의 클래스로 분리해서 응집도를 높여야 한다.
  • 특정한 메서드 그룹이 특정한 속성 그룹만 사용한다면 응집도가 낮은 것이다.
    • 함께 사용되는 메서드와 속성을 별도의 클래스로 분리해 응집도를 높여야 한다.
  • 클래스의 인스턴스를 초기화 할 때 경우에 따라 서로 다른 속성들을 초기화한다면 응집도가 낮은 것이다.
    • 초기화되는 속성의 그룹을 기준으로 클래스를 분리해 응집도를 높여야 한다. 

 

 

728x90