내 코드가 그렇게 이상한가요? 8장 강한 결합: 복잡하게 얽혀서 풀 수 없는 구조

2025. 3. 4. 20:43개발서적 스터디/내 코드가 그렇게 이상한가요?

결합도란? : 모듈 사이의 의존도를 나타내는 지표

  • 강한 결합은 사용하기도, 수정하기도 힘들다

8.1 결합도와 책무

  • 단일 책임의 원칙을 기억하면서 구현 → 클래스가 담당하는 책임은 하나로 제한하자
  • DRY 원칙(Don’t repeat yourself)
    • 반복을 피해라 단, 비슷한 로직이라도 개념이 다르면 중복을 허용해야 한다.
    • 개념적으로 다른 것까지 무리하게 중복을 제거하면 강한 결합 상태가 된다

8.2 다양한 강한 결합 사례와 대처 방법

  • 상속과 관련된 강한 결합
    • 상속은 반드시 단일 책임 원칙을 염두해 두고 구현해야함, 그리고 값 객체와 컴포지션 등 다른 설계를 할 수 없는지 반드시 선검토 해보자
  • 인스턴스 변수별로 클래스 분할이 가능한 로직
    • 양향 스케치 (의존 관계 그림) 활용하여 분리해보기
  • 특별한 이유 없이 public 사용하지 않기
  • private 메서드가 너무 많다는것은 책임이 너무 많다는 것
  • 높은 응집도를 오해해서 생기는 강한 결합
    • 응집도가 높다는 개념을 염두에 두고, 관련이 깊다고 생각되는 로직을 한곳에 모으려고 했지만, 결과적으로 강한 결합 구조를 만다는 상황은 매우 자주 일어나는 일
    • 각자의 개념을 분리해야 느슨한 결합 구조를 만들 수 있음
  • 스마트 UI : 화면 표시를 담당하는 클래스 중에서 화면 표시와 직접적인 관련이 없는 책무가 구현되어 있는 클래스
    • 책무를 분리하는것이 좋음
  • 거대 데이터 클래스, 트랜잭션 스크립터 패턴, 갓 클래스 처럼 강한 결합 클래스에 대처하는 방법 → 단일 책임의 원칙을 지키자, 클래스는 아무리 많아도 100~200 줄