내 코드가 그렇게 이상한가요? 5장 응집도: 흩어져 있는 것들
2025. 3. 4. 20:41ㆍ개발서적 스터디/내 코드가 그렇게 이상한가요?
응집도란 모듈 내부에 있는 데이터와 로직 사이의 관계가 얼마나 강한지 나타내는 지표
- 응집도가 높은 구조는 변경하기 쉬우며 바람직한 구조
5.1 Static 메소드 오용
- 데이터와 관련 로직을 모은다
- static 메소드는 언제 사용하는게 좋을까?
- 아마 companion object 로 봤을 때? 응집도의 영향을 받지 않는 경우 예를들어 로그 출력, 포맷 변환
5.2 초기화 로직 분산
- 생성자를 Private 로 구현
- 생성 로직이 너무 많아질 경우 생성 전용 팩토리 클래스로 분리
5.3 범용 처리 클래스(Common/Util)
- 너무 많은 로직이 한 클래스에 모이는 문제
- 범용 이란 이름 자체로 범용적으로 사용하고 싶은 로직은 Common 에 모아두면 되겠다 생각
- 꼭 필요한 경우가 아니라면 범 용 처리 클래스를 만들지 않는것이 좋음
- 횡단 관심사
- 횡단 관심사 : 다양한 상황에서 넓게 활용되는 기능
- 로그 출력, 오류 확인, 디버깅, 예외 처리, 캐시, 동기화, 분산 처리
- 횡단 관심사의 경우 범용으로 처리해도 됨
- 횡단 관심사 : 다양한 상황에서 넓게 활용되는 기능
5.4 결과를 리턴하는 데 매개변수 사용하지 않기
출력 매개변수(출력에 사용되는 매개변수)는 응집도를 낮추는 원인이 됨
5.5 매개변수가 너무 많은 경우
- 매개 변수가 너무 많은 경우 응집도가 낮아지기 쉽다
- 매개 변수가 많다는건 해당 함수에서 많은 기능을 하고 싶다는 의미 → 로직이 복잡해지거나 중복코드 발생의 원인이 됨
- 너무 많은 매개 변수를 데이터 클래스로 만들어 응집도 높이기
5.6 메서드 체인
- 메서드 체인 : 여러 메서드를 연결해서 리턴 값의 요소에 차례차례 접근하는 방법
- 응집도를 낮출 수 있어 좋지 않은 방식
→ 묻지 말고 명령하기 (Tell, Don’t Ask)
- 다른 객체의 내부 상태를 기반으로 판단하거나 제어하려 하지 말고 메서드로 명령해서 객체가 알아서 판단하고 제어하도록 설계하기
- 인스턴스 변수를 private 로 설정하여 외부에서 접근할 수 없도록 해야 함
'개발서적 스터디 > 내 코드가 그렇게 이상한가요?' 카테고리의 다른 글
내 코드가 그렇게 이상한가요? 10장 이름 설계: 구조를 파악할 수 있는 이름 (0) | 2025.03.04 |
---|---|
내 코드가 그렇게 이상한가요? 9장 설계의 건전성을 해치는 여러 악마 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 8장 강한 결합: 복잡하게 얽혀서 풀 수 없는 구조 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 7장 컬렉션: 중첩을 제거하는 구조화 테크닉 (0) | 2025.03.04 |
내 코드가 그렇게 이상한가요? 6장 조건 분기: 미궁처럼 복잡한 분기 처리를 무너뜨리는 방법 (0) | 2025.03.04 |