기능과 책임 분리
이 글과 하위 글들은 [객체 지향 프로그래밍 입문]에 관한 내용입니다. 최범균님의 인프런의 강의를 보며 정리한 내용으로 문제가 될시 삭제하겠습니다.
기능 분해
하나의 기능은 여러 개의 하위 기능으로 분해한다.
기능은 곧 책임!
분리한 각 기능을 알맞게 분배한다.
큰 클래스, 큰 메서드는 곧 문제가 된다!
클래스나 메서드가 커지면 절차 지향의 문제가 동일하게 발생된다.
큰 클래스 -> 많은 필드를 많은 메서드가 공유하게 된다.
큰 메서드 -> 많은 변수를 많은 코드가 공유한다.
여러 기능이 한 클래스/메서드에 섞여 있을 가능성이 높아지게 된다.
그래서 책임에 따라 알맞게 코드를 분리하는게 필요하다.
큰 클래스/메서드에 대한 몇 가지 책임 분배/분리 방법
패턴 적용
계산 기능 분리
외부 연동 분리
조건별 분기는 추상화
패턴 적용 - 전형적인 역할 분리
간단한 웹: 컨트롤러, 서비스, DAO
복잡한 도메인: 엔티티, 밸류, 리포지토리, 도메인 서비스
AOP: Aspect(공통 기능)
GoF: 팩토리, 빌더, 전략, 템플릿 메서드, 프록시/데코레이터 등
계산 분리
연동 분
네트워크, 메시징, 파일 등 연동 처리 코드를 분리한다.
조건별 분기는 추상화
연속적인 if-else
는 추상화를 고민한다.
역할을 분리할 때 주의할 점: 의도가 잘 드러나는 이름을 사용한다.
예) HTTP로 추천 데이터를 읽어오는 기능을 분리시 RecommendService
-> HttpDataService
역할 분리의 장점
역할 분리가 잘 되면 테스트가 용이해진다.
Last updated