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

     

     

    결합도란?

    결합도는 두 사람이 붙어 있는 모습을 상상하면 좋다. 손만 잡고 있는지, 팔짱을 끼고 있는지, 포옹을 하고 있는지에 따라서 떨어뜨리기 어려운 느낌!

    결합도란, 두 모듈 간의 상호 의존도를 의미하며, 구조적 설계에서 기능 수행 시 모듈 간 최소한의 상호작용을 하여 하나의 기능만을 수행하는 정도를 표현한다.

     

     

    결합도의 유형

    결합도가 낮은 것이 가장 고품질의 모듈이다.

     

    자 -> 스 -> 제 -> 외 - > 공 -> 내

     

    자료 결합도

    모듈 간의 인터페이스가 자료 요소로만 구성된 경우

     

    스탬프 결합도

    두 모듈이 동일한 자료구조를 조회하는 경우

     

     

    제어 결합도

    내부 논리 조작을 제어하기 위한 목적으로 제어신호를 이용하여 통신하는 경우

     

     

    외부 결합도

    외부로 선언한 변수를 다른 모듈에서 참조할 경우

     

    공통 결합도

    여러 모듈이 공통 자료 영역을 사용하는 경우(= 전역 변수)

     

    내용 결합도

    한 모듈이 다른 모듈의 내부 기능 및 그 내부 자료를 조회하도록 설계되었을 경우

     

     


    따라서 A라는 모듈이 B라는 모듈에 대해 너무 자세한 내용까지 알고 있는 경우를 강한 결합도를 갖는다 (=내용 결합도)고 하며, A모듈이 B모듈에 대해 필요한 정보만 알고있다면(=자료 결합도) 두 모듈을 낮은 결합도를 갖는다고 할 수 있다.

     

    객체지향 관점에서 결합도는 객체 또는 클래스가 협력에 필요한 수준의 관계만을 유지하는 것을 나타내며, 이런 관점에서 강한 결합도는 반드시 피해야 하며, 적절한 결합도를 유지하기 위해 고민해야한다.

     

     


    📌같이 보면 좋아요

     

    결합도는 낮추고 응집도는 높은 코드가 좋은 코드인데 전략패턴에서는 각 전략끼리 관련이 없어지고 서비스영역과 전략영역이 분리되기 때문에 의존성이 낮습니다. 의존성이 낮다는 얘기는 변경사항이 발생해도 사이드이팩트가 발생할 확률이 떨어진다는 뜻입니다. 그리고 코드를 다시 리팩토링할 일이 생겼을 때 손쉽게 할 수 있습니다.'

     

    출처​

     

    코드 리팩토링, IF문을 제거하자 (전략패턴)

    레거시 코드를 리팩토링하며 얻은 경험을 공유합니다. 스프링부트환경에서 전략패턴을 활용했습니다.

    medium.com

     

    728x90

    댓글