God class

  • 갓 클래스는 너무 많은 책임을 맡고 지나치게 복잡해져서 이해, 테스트 및 유지가 어려운 클래스

특징

  1. 높은 복잡성 : 순환 복잡성이 높은 경향이 있으며, 이는 코드를 통과하는 경로가 많다는 것을 의미
  2. 응집성 부족 : 종종 서로 관련 없는 기능을 하나의 클래스로 결합하여 응집성이 부족
  3. 비대한 크기 : 코드 줄, 메소드 및 필드 수가 많음
  4. 경직된 디자인 : 유연성이 떨어지고 수정하거나 확장하기가 어려움
  5. 테스트 가능성이 낮음 : 복잡해서 테스트 하기가 어렵다.
  6. 코드 냄새 : 긴 메소드, 과도한 주석, 중복 코드 등 악취를 풍긴다.

안티 패턴인 이유

  1. SRP 위반
  2. 낮은 응집성
  3. 유연성 저하
  4. 테스트 하기 어려움
  5. 낮은 코드 품질

리팩토핑

  1. 책임 소재를 명확하게 하기 : 책임을 구분하고 이를 바탕으로 분리한다.
  2. 메소드 추출 : 복잡성을 줄이고 가독성을 향상시키는 방법
  3. 클래스 분할 : 더 작고 책임이 명확하게 분리하기
  4. 디자인 패턴 사용 : Factory, Observer 등 코드 베이스를 모듈화하고 단순화
  5. 데이터 캡슐화 : 데이터가 클래스 전반에 걸쳐 흩어져 있기에 결합이 단단하고 유연성이 떨어진다.
  6. 기능 모듈화 : 작은 단위로 모듈화하고 세분화한다.

유지 보수

1.TDD

  • 변경으로 인해 퇴행이나 의도하지 않은 부작용이 발생하지 않도록 도움을 줄 수 있다.

    2. 지속적인 리팩토링

  • 변화에 따라 지속적으로 수행