기능 분해
하나의 기능(=책임)안에 세부적으로 기능을 나눌 수 있다. 각 분리된 기능들을 알맞게 나눠야 한다.
- 여기서 분배란, 기능을 하나의 클래스에서 다 구현하는게 아니라 객체클래스, service단, repository단으로 각 단계에 기능들을 알맞게 넣어준다.
위와 같이 분리했어도 점점 클래스, 혹은 메소드가 커지면 문제가 발생한다 -> 여러기능들이 하나에 섞여있을 가능성이 높다 -> 책임에 따라 코드를 분리해야한다.
역할을 분리하는 방법
- 전형적인 역할 분리 -> Controller, Service, Repo
- 계산하는 로직 분리
- 외부와 연동하는 코드들을 분리 -> 네트워크, 메시징, 파일 등 외부와 연동하는 코드들을 분리한다.
- 연속적인 if-else는 추상화로 분기
출처: 최범균, “객체 지향 프로그래밍 입문”, 인프런