Class Does Too Much

  • 한 클래스가 너무 많은 일을 담당하는 것
  • SRP를 위반할 때 발생

결과

  1. 높은 복잡성
  2. 높은 결합도
  3. 유지 보수의 어려움
  4. 진한 코드 냄새
  5. 낮은 확장성

식별하기

  1. 메소드 수가 너무 많다 : 그만큼 많은 일을 하고 있다는 의미가 된다.
  2. 높은 복잡성 : 주기적 복잡성이 높고 메소드가 길며 상속 계층 구조가 깊은 클래스
  3. 다중 책임 : 한 클래스에 서로 관련 없는 여러 작업을 담당하고 있는 경우
  4. 잘못된 캡슐화 : 너무 많은 공개 메소드와 변수를 노출하는 경우
  5. 응집성 부족 : 클래스에 서로 다른 데이터 집합에서 작동하거나 관련 없는 기능을 가진 메소드가 있다면 너무 많은 일을 하고 있는 것

리팩토리 전략

  1. 책임 소재 파악하기
  2. 구성 활용 : 컴포지션으로 더 작고 집중적인 클래스를 결합하여 원하는 기능을 달성
  3. 메소드 추출 : 복잡한 메소드를 더 작고 관리하기 작은 단위로 분해
  4. 클래스 추출 : 여러 책임이 있는 경우 책임들을 별도 클래스로 추출
  5. 디자인 패턴 적용
  6. 긴메소드 리팩토링 : 긴 메소드가 있다면 SRP를 따르느 더 작은 집중적인 메소드로 제공
  7. SOLID 원칙 적용
  8. TDD : 리팩토링을 진행하면서 원하는 기능을 유지하는지 테스트를 작성
  9. 코드 리뷰