냄새 18. 중재자

    들어가기 전

    이 글은 인프런 백기선님의 강의를 복습하며 작성한 글입니다. 


    냄새 18. 중재자 (Middle Man)

    • '중재자' 냄새는 다음을 의미한다.
      • 캡슐화가 과도해서, 많은 메서드가 단순히 메서드 체이닝을 랩핑하는 '중재자 냄새'로 판단할 수 있음. 
      • 메서드 체인의 반대에 해당하는 냄새다.
    • 캡슐화
      • 캡슐화를 통해 내부의 구체적인 정보를 최대한 감출 수 있다.
      • 그러나 어떤 클래스의 메서드가 대부분 다른 클래스로 메서드 호출을 위임하고 있다면 중재자를 제거하고 클라이언트가 해당 클래스를 직접 사용하도록 코드를 개선할 수 있음.
    • 관련 리팩토링
      • '중재자 제거하기' 리팩토링을 사용해 클라이언트가 필요한 클래스를 직접 사용하도록 개선할 수 있음.
      • '함수 인라인'을 사용해 메서드 호출한 쪽으로 코드를 보내서 중재자를 없앨 수도 있음.
      • '슈퍼 클래스를 위임으로 바꾸기' → 단순히 상위 클래스를 호출한다면.
      • '서브 클래스를 위임으로 바꾸기' 

    자세한 내용은?

    메서드 체인을 감추는 작업이 많아지다보면, '중재자'라는 냄새로 바뀔 수도 있다. 캡슐화는 '내부의 구체적인 정보를 외부에 드러내지 않는 기능'인데, 캡슐화가 남용되면 밖에서 필요로 하는 코드를 중간에서 누가 감싸는 느낌이 든다. 외부에서 원하는 코드를 그대로 쓰지 못하고, 항상 중간의 누군가를 거쳐서 써야하는 경우가 있다. 이 때가 '중재자 냄새'에 해당된다.

    댓글

    Designed by JB FACTORY