기능 분해
- 기능은 하위 기능으로 분해
- 기능을 누가 제공할 것인가?
- 기능은 곧 책임
- 분리한 각 기능을 알맞게 분배
큰 클래스, 큰 메서드
- 클래스나 메서드가 커지면 절차지향의 문제발생
- 큰 클래스 → 많은 필드를 많은 메서드가 공유
- 서로 다른 코드가 공유를 계속하면 변경이 힘들어짐
- 큰 메서드 → 많은 변수를 많은 코드가 공유
- 여러 기능이 한 클래스, 메서드에 섞여 있을 가능성
- 큰 클래스 → 많은 필드를 많은 메서드가 공유
- 책임에 따라 알맞게 코드 분리 필요
책임 분배/분리 방법
패턴 적용
- 전형적인 역할 분리
- 컨트롤러, 서비스, DAO
- 엔티티, 밸류, 레포지토리, 도메인
- AOP
- Aspect (공통 기능)
- GoF (Gang of Fours) Design Pattern
- Factory, Builder, Strategy, Template, Proxy, Decorator
- 계산 로직 분리
- 연동 분리
- 네트워크, 메시징, 파일 연동 처리 분리
- 조건 분기 추상화
- 연속적인 if-else는 추상화 고민
‼️주의 의도가 잘 드러나는 이름 사용
역할 분리와 테스트
하위 기능을 분리하고 각각의 하위기능을 알맞은 객체에게
나누어 배분하는것으로 객체지향 설계를 할 수 있다.