Skip to content

응집도와 결합도

응집도와 결합도는 코드의 관심사와 연결관계가 어느정도로 구분되어있고, 얽혀있는지를 나타내는 정도이며, 모듈의 독립성을 판단하는 두 가지 지표이다. 응집도는 모듈 내부의 기능적인 집중 정도, 결합도는 모듈과 모듈간의 상호 의존 정도라고 할 수 있다.

높은 응집도와 낮은 결합도를 가진 코드가 객체지향적으로 좋은 코드로 여겨지며,
객체지향 원칙 중 개방 폐쇄 원칙(Open-Closed Principle, OCP)과 연관있는 개념이다.

응집도(Cohesion)

응집도는 모듈에 포함된 내부 요소들이 하나의 책임/ 목적을 위해 연결되어있는 연관된 정도이다. 응집도가 높다는 것은, 하나의 모듈또는 쿨래스가 하나의 책임 또는 관심사에만 집중되어있다는 것을 뜻한다. 응집도가 높으면 그 모듈이 처리할 수 있는 기능 중 하나가 변경된다고 하더라도 해당 모듈에 있는 코드만 수정하면 된다.

즉, 응집도는 얼마나 적은 책임을 가지고있는지의 정도이며, 요구사항 변경시에 코드를 최소로 변경하기 위한 조건이다.

결합도(Coupling)

결합도는 한 객체가 책임과 관심사가 다른 오브젝트와 어느정도 결합되어있는 지의 정도이다. 느슨한 결합은 관계를 유지하는 데 꼭 필요한 최소한의 방법만 간접적인 형태로 제공하고, 나머지는 서로 독립적인 상태를 의미한다. 그렇기 떄문에 결합도가 낮은 경우엔 변경이 일어나는 객체가 결합되어있는 다른 객체에게 주는 영향이 적어지게 된다. 결합도가 낮아지면 변화에 대응하는 속도가 높아지고, 구성이 깔끔해진다. 또한 확장하기에도 편리해진다.