[java Anti Pattern Series] 17.godclass
January 31, 2025
God class
- 갓 클래스는 너무 많은 책임을 맡고 지나치게 복잡해져서 이해, 테스트 및 유지가 어려운 클래스
특징
- 높은 복잡성 : 순환 복잡성이 높은 경향이 있으며, 이는 코드를 통과하는 경로가 많다는 것을 의미
- 응집성 부족 : 종종 서로 관련 없는 기능을 하나의 클래스로 결합하여 응집성이 부족
- 비대한 크기 : 코드 줄, 메소드 및 필드 수가 많음
- 경직된 디자인 : 유연성이 떨어지고 수정하거나 확장하기가 어려움
- 테스트 가능성이 낮음 : 복잡해서 테스트 하기가 어렵다.
- 코드 냄새 : 긴 메소드, 과도한 주석, 중복 코드 등 악취를 풍긴다.
안티 패턴인 이유
- SRP 위반
- 낮은 응집성
- 유연성 저하
- 테스트 하기 어려움
- 낮은 코드 품질
리팩토핑
- 책임 소재를 명확하게 하기 : 책임을 구분하고 이를 바탕으로 분리한다.
- 메소드 추출 : 복잡성을 줄이고 가독성을 향상시키는 방법
- 클래스 분할 : 더 작고 책임이 명확하게 분리하기
- 디자인 패턴 사용 : Factory, Observer 등 코드 베이스를 모듈화하고 단순화
- 데이터 캡슐화 : 데이터가 클래스 전반에 걸쳐 흩어져 있기에 결합이 단단하고 유연성이 떨어진다.
- 기능 모듈화 : 작은 단위로 모듈화하고 세분화한다.
유지 보수
1.TDD
- 변경으로 인해 퇴행이나 의도하지 않은 부작용이 발생하지 않도록 도움을 줄 수 있다.
2. 지속적인 리팩토링
- 변화에 따라 지속적으로 수행