개요
결합도(Coupling)와 응집도(Cohesion)은 프로그래밍에 매우 중요한 개념입니다. 모듈 결합도를 낮추고 응집도를 높여야 잘 만들어진 모듈이라고 할 수 있습니다.
결합도(Coupling)란?
결합도는 모듈과 모듈 간의 의존 정도를 말합니다. 완전한 모듈화는 결합도가 0%에 수렴해야 합니다. 이를 달성하려면 SOLID 원칙의 의존관계 역전 원칙을 지켜나가면 좋습니다.
응집도(Cohesion)란?
응집도란 모듈 내부 요소들의 관련성이 높은 것을 의미합니다. 응집도가 높으면 모듈화가 잘 되었다고 할 수 있습니다.
결합도를 낮추고 응집도를 높이기 위해 프로젝트 구조 만들기
하나의 모듈은 프로젝트
로 정의합니다. 왜냐하면 C#에서의 유용한 접근자 중 internal
이 있는데 이게 프로젝트에 의해 생성되는 dll 단위로 적용되기 때문입니다.
또한 프로젝트 참조
를 통해 결합도를 제어할 수 있습니다. 화면기능과 로직기능으로 모듈을 나눠 생각했을 때, 화면기능은 반드시 로직기능을 참조해야 하지만, 로직기능은 화면기능을 참조해서는 안됩니다. 이것을 프로젝트 참조
유무로 제어할 수 있습니다.
예를 들어보자면, 화면에 도형을 그리는 기능이 있다고 칩시다. 최종적으로 도형은 화면기능으로 그려져야 하지만, 다양한 도형의 좌표연산은 화면기능
이 아니라 로직기능
이라고 할 수 있습니다.
정리
이렇게 의존성을 결합도
와 응집도
의 관점으로 살펴볼 수 있고, 프로젝트 구조를 통해 이를 달성할 수 있습니다.