QUESTION #0250
프론트엔드

결합도와 응집도에 대해 설명해주세요.

결합도와 응집도에 대해 설명해주세요.

분야: 프론트엔드


결합도와 응집도는 코드 설계의 품질을 결정하는 중요한 개념들입니다.

먼저, 결합도는 서로 다른 모듈 간에 상호 의존하고 있는 정도가 얼마나 높은지를 의미합니다. 만약 결합도가 낮으면 모듈의 독립성이 높아져 변경이 용이해지고 코드의 재사용성이 증가합니다. 반면, 결합도가 높으면 한 모듈이 변경될 때 다른 모듈도 영향을 받을 가능성이 커집니다. 이로 인해 한 부분을 수정하면 연쇄적인 변경이 발생할 가능성이 높은데, 이는 유지보수를 어렵게 만듭니다. 이상적인 설계를 위해서는 결합도를 낮추는 것이 중요합니다.

응집도는 모듈 내부 요소들이 얼마나 밀접하게 서로 관련되어 있는지를 의미합니다. 응집도가 높을수록 모듈 내부의 기능이 단일한 목적을 가지고 있습니다. 이러한 특성은 가독성과 유지보수성에 도움이 됩니다. 반대로 응집도가 낮으면 하나의 모듈이 여러 가지 역할을 수행하게 되어 코드가 복잡해지고, 예측 가능성이 낮아져 수정할 때 예상치 못한 부작용이 발생할 가능성이 높아집니다. 따라서 이상적인 코드 설계를 위해서는 응집도를 높이는 것이 중요합니다.

주로 결합도와 응집도는 서로 반비례하는 경향이 있습니다. 일반적으로 결합도가 낮을수록 응집도가 높아지고, 반대로 결합도가 높으면 응집도가 낮아지는 경우가 많습니다.

결합도 및 응집도와 관련된 예시를 설명해주실 수 있나요? 🤔

예를 들어, 하나의 모듈이 다른 모듈의 내부 구현에 직접 접근한다면 결합도가 높은 상태입니다. 인터페이스를 통해 의존 관계를 느슨하게 만들면 결합도를 낮출 수 있습니다.

한편, 하나의 파일에서 사용자 인증과 데이터베이스 처리를 함께 담당한다면 응집도가 낮다고 볼 수 있습니다. 이러한 경우 인증 관련 로직과 데이터베이스 처리를 분리하여 각각의 책임을 명확히 하면 응집도를 높일 수 있습니다.

📚 추가 학습 자료를 공유합니다.