소프트웨어 설계에서 응집도와 결합도는 좋은 코드 설계를 판단하는 중요한 기준으로
응집도는 높을수록, 결합도는 낮을수록 좋다.
응집도(Cohesion)란
하나의 모듈(클래스, 함수 등)이 얼마나 관련된 기능들로 구성되어 있는지를 나타내는 지표이다.
하나의 모듈이 하나의 역할만을 담당할수록 응집도가 높다고 볼 수 있다.
하나의 클래스가 하나의 책임만을 진다.
불필요한 기능이 포함되지 않아 코드 수정 시 영향이 적다.
유지보수 및 확장성이 뛰어나다
하나의 모듈이 여러 기능을 담당하면, 수정 할 때 의도치 않은 부작용이 발생한다.
변경이 자주 발생하며, 다른 기능과 얽혀있어 유지보수가 어려워진다.
결합도(Coupling)란
하나의 모듈(클래스, 함수 등)이 다른 모듈과 얼마나 강하게 연결되어 있는가를 나타내는 지표이다.
한 모듈을 변경해도 다른 모듈에 끼치는 영향이 적다.
코드 재사용성과 유지보수성이 증가한다.
한 모듈이 변경될 때, 관련된 모든 모듈이 함께 수정되어야 한다.
모듈간 의존성이 높아지면서 확정성과 유지보수성이 떨어진다.