모듈 설계의 핵심 개념: 응집도, 결합도, 의존성
1. 응집도 (Cohesion)
하나의 모듈 내부 요소들이 서로 관련되어 있는 정도를 말합니다.
모듈 내부의 함수나 클래스가 같은 목적을 위해 함께 동작한다면, 해당 모듈은 응집도가 높은 상태입니다.
✅ 좋은 응집도란?
- 모듈이 하나의 책임만 가질 때
- 내부 요소들이 서로 연관된 역할을 수행할 때
❌ 나쁜 응집도의 예시
- 유틸 함수가 이것저것 뒤섞여 있는 경우
- 한 모듈이 인증, 네트워크, UI 처리까지 모두 맡고 있는 경우
2. 결합도 (Coupling)
서로 다른 모듈 간의 의존성과 연결 정도를 의미합니다.
모듈 간 연결이 느슨할수록 유지보수가 쉬워지며, 다른 모듈로 교체하거나 수정하기도 편해집니다.
✅ 낮은 결합도란?
- 한 모듈이 다른 모듈의 내부 구현을 몰라도 동작할 수 있을 때
- 인터페이스나 추상화를 통해 느슨하게 연결된 상태일 때
❌ 높은 결합도의 위험
- 한 모듈이 변경되면, 연결된 다른 모듈들도 함께 수정해야 할 가능성이 높음
- 테스트가 어려워짐
3. 의존성 (Dependency)
한 모듈이 다른 모듈의 기능이나 데이터에 의존하는 관계를 의미합니다.
의존성 자체가 나쁜 것은 아니지만, 이를 적절히 관리하지 않으면 결합도가 높아지고, 모듈 간 독립성이 떨어지게 됩니다.
✅ 의존성을 잘 관리하는 방법
- 의존성 주입(DI)을 사용하는 방법
- 인터페이스나 추상화를 통해 유연한 구조를 만드는 것