[java Anti Pattern Series] 18.classdoestoomuch
February 1, 2025
Class Does Too Much
- 한 클래스가 너무 많은 일을 담당하는 것
- SRP를 위반할 때 발생
결과
- 높은 복잡성
- 높은 결합도
- 유지 보수의 어려움
- 진한 코드 냄새
- 낮은 확장성
식별하기
- 메소드 수가 너무 많다 : 그만큼 많은 일을 하고 있다는 의미가 된다.
- 높은 복잡성 : 주기적 복잡성이 높고 메소드가 길며 상속 계층 구조가 깊은 클래스
- 다중 책임 : 한 클래스에 서로 관련 없는 여러 작업을 담당하고 있는 경우
- 잘못된 캡슐화 : 너무 많은 공개 메소드와 변수를 노출하는 경우
- 응집성 부족 : 클래스에 서로 다른 데이터 집합에서 작동하거나 관련 없는 기능을 가진 메소드가 있다면 너무 많은 일을 하고 있는 것
리팩토리 전략
- 책임 소재 파악하기
- 구성 활용 : 컴포지션으로 더 작고 집중적인 클래스를 결합하여 원하는 기능을 달성
- 메소드 추출 : 복잡한 메소드를 더 작고 관리하기 작은 단위로 분해
- 클래스 추출 : 여러 책임이 있는 경우 책임들을 별도 클래스로 추출
- 디자인 패턴 적용
- 긴메소드 리팩토링 : 긴 메소드가 있다면 SRP를 따르느 더 작은 집중적인 메소드로 제공
- SOLID 원칙 적용
- TDD : 리팩토링을 진행하면서 원하는 기능을 유지하는지 테스트를 작성
- 코드 리뷰