커플링(Coupling, 결합도)은 C#에서 모듈 간의 관계, 즉 모듈들이 서로 얼마나 의존하고 있는지를 나타내는 개념입니다. 소프트웨어 설계에서 결합도는 코드의 품질과 유지보수성을 좌우하는 중요한 요소로, 크게 느슨한 결합(Loose Coupling)과 긴밀한 결합(Tight Coupling) 두 가지 유형으로 나뉩니다.
느슨한 결합(Loose Coupling)
느슨한 결합은 가장 권장되는 설계 방식입니다. 클래스 간의 의존성을 최소화하기 때문에 한 클래스를 수정하더라도 다른 클래스에 영향을 주지 않습니다. 의존성이 줄어들면 해당 클래스를 다른 프로젝트나 상황에서 손쉽게 재사용할 수 있다는 큰 장점이 있습니다.
느슨하게 결합된 코드를 작성하면 다음과 같은 이점을 얻을 수 있습니다.
- 한 모듈의 변경이나 오류가 다른 모듈로 전파되지 않습니다.
- 각 모듈을 독립적으로 테스트할 수 있어 테스트 용이성(testability)이 향상됩니다.
- 코드 구조가 명확해져 유지보수가 쉬워집니다.
- 다른 컴포넌트의 변경 사항으로부터 상대적으로 적은 영향을 받습니다.
긴밀한 결합(Tight Coupling)
반면 긴밀한 결합은 클래스와 객체가 서로 강하게 의존하는 상태를 말합니다. 하나의 클래스가 다른 클래스의 내부 구현까지 알고 있어야 동작할 수 있기 때문에, 특정 클래스를 수정하면 이에 의존하는 다른 클래스들도 연달아 수정해야 하는 상황이 발생합니다.
이러한 구조는 코드의 재사용성(reusability)을 크게 떨어뜨리며, 테스트와 유지보수도 어렵게 만듭니다. 따라서 실무에서는 인터페이스나 의존성 주입(DI) 등을 활용해 결합도를 낮추는 방향으로 설계하는 것이 좋습니다.