프로젝트 구조를 통해 모듈 결합도를 낮추고 응집도를 높이기

개요

결합도(Coupling)와 응집도(Cohesion)은 프로그래밍에 매우 중요한 개념입니다. 모듈 결합도를 낮추고 응집도를 높여야 잘 만들어진 모듈이라고 할 수 있습니다.

결합도(Coupling)란?

결합도는 모듈과 모듈 간의 의존 정도를 말합니다. 완전한 모듈화는 결합도가 0%에 수렴해야 합니다. 이를 달성하려면 SOLID 원칙의 의존관계 역전 원칙을 지켜나가면 좋습니다.

응집도(Cohesion)란?

응집도란 모듈 내부 요소들의 관련성이 높은 것을 의미합니다. 응집도가 높으면 모듈화가 잘 되었다고 할 수 있습니다.

결합도를 낮추고 응집도를 높이기 위해 프로젝트 구조 만들기

하나의 모듈은 프로젝트로 정의합니다. 왜냐하면 C#에서의 유용한 접근자 중 internal이 있는데 이게 프로젝트에 의해 생성되는 dll 단위로 적용되기 때문입니다.

또한 프로젝트 참조를 통해 결합도를 제어할 수 있습니다. 화면기능과 로직기능으로 모듈을 나눠 생각했을 때, 화면기능은 반드시 로직기능을 참조해야 하지만, 로직기능은 화면기능을 참조해서는 안됩니다. 이것을 프로젝트 참조 유무로 제어할 수 있습니다.

예를 들어보자면, 화면에 도형을 그리는 기능이 있다고 칩시다. 최종적으로 도형은 화면기능으로 그려져야 하지만, 다양한 도형의 좌표연산은 화면기능이 아니라 로직기능이라고 할 수 있습니다.

정리

이렇게 의존성을 결합도응집도의 관점으로 살펴볼 수 있고, 프로젝트 구조를 통해 이를 달성할 수 있습니다.

좋아요 3