내 코드가 그렇게 이상한가요? 8장 강한 결합: 복잡하게 얽혀서 풀 수 없는 구조
2025. 3. 4. 20:43ㆍ개발서적 스터디/내 코드가 그렇게 이상한가요?
결합도란? : 모듈 사이의 의존도를 나타내는 지표
- 강한 결합은 사용하기도, 수정하기도 힘들다
8.1 결합도와 책무
- 단일 책임의 원칙을 기억하면서 구현 → 클래스가 담당하는 책임은 하나로 제한하자
- DRY 원칙(Don’t repeat yourself)
- 반복을 피해라 단, 비슷한 로직이라도 개념이 다르면 중복을 허용해야 한다.
- 개념적으로 다른 것까지 무리하게 중복을 제거하면 강한 결합 상태가 된다
8.2 다양한 강한 결합 사례와 대처 방법
- 상속과 관련된 강한 결합
- 상속은 반드시 단일 책임 원칙을 염두해 두고 구현해야함, 그리고 값 객체와 컴포지션 등 다른 설계를 할 수 없는지 반드시 선검토 해보자
- 인스턴스 변수별로 클래스 분할이 가능한 로직
- 양향 스케치 (의존 관계 그림) 활용하여 분리해보기
- 특별한 이유 없이 public 사용하지 않기
- private 메서드가 너무 많다는것은 책임이 너무 많다는 것
- 높은 응집도를 오해해서 생기는 강한 결합
- 응집도가 높다는 개념을 염두에 두고, 관련이 깊다고 생각되는 로직을 한곳에 모으려고 했지만, 결과적으로 강한 결합 구조를 만다는 상황은 매우 자주 일어나는 일
- 각자의 개념을 분리해야 느슨한 결합 구조를 만들 수 있음
- 스마트 UI : 화면 표시를 담당하는 클래스 중에서 화면 표시와 직접적인 관련이 없는 책무가 구현되어 있는 클래스
- 책무를 분리하는것이 좋음
- 거대 데이터 클래스, 트랜잭션 스크립터 패턴, 갓 클래스 처럼 강한 결합 클래스에 대처하는 방법 → 단일 책임의 원칙을 지키자, 클래스는 아무리 많아도 100~200 줄
'개발서적 스터디 > 내 코드가 그렇게 이상한가요?' 카테고리의 다른 글
내 코드가 그렇게 이상한가요? 10장 이름 설계: 구조를 파악할 수 있는 이름 (0) | 2025.03.04 |
---|---|
내 코드가 그렇게 이상한가요? 9장 설계의 건전성을 해치는 여러 악마 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 7장 컬렉션: 중첩을 제거하는 구조화 테크닉 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 6장 조건 분기: 미궁처럼 복잡한 분기 처리를 무너뜨리는 방법 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 5장 응집도: 흩어져 있는 것들 (0) | 2025.03.04 |