728x90
1. 기능 분해
- 하나의 기능은 여러가지의 하위 기능으로 분해할 수 있다.
- 기능을 분류하고 각 객체에게 기능 구현의 책임을 제공한다.
- 분리한 하위 기능을 통해서 전체 기능을 구현하게 됨
2. 문제
- 클래스나 메소드의 크기가 증가할 경우 절차지향에서 마주하였던 문제가 또 다시 발생
- 큰 클래스 : 많은 필드를 많은 메소드가 공유
- 큰 메소드 : 많은 변수를 많은 코드가 공요
- 여러 기능이 한 클래스 및 메소드에 섞에 있을 가능성이 존재한다.
=> 데이터를 공유하게 됨으로써 코드를 수정하기 어려움을 겪게 됨
그럼 어떻게 해야 할까?
- 책임에 따라 알맞게 코드를 분리할 필요가 있다.
3. 책임에 따른 클래스 분배 분리 방법
- 패턴적용
- 전형적인 역할 분리
- ex) 웹 : 컨트롤러, 서비스, DAO / 복잡한 도메인 : 엔티티, 밸류, 레포지토리, 도메인 서비스
- 계산 기능 분리
- 계산이 필요한 코드는 분리한 클래스에서의 계산 기능을 사용하도록!
- 외부 연동 분리
- 네트워크, 메시징, 파일 등 외부와의 연동을 수행하는 코드를 따로 분리
- 조건별 분기 추상화
- if-else 블록을 추상화 : 각 메소드에서 사용하는 조건문의 형태가 유사하다면 이를 추상화 하도록 한다.
# 기능 분류 시 주의점
- 의도가 잘 드러나는 이름을 사용하는 것을 추천
#기능 분리의 장점
- 역할분리가 잘 수행되면 프로그램의 테스트 또한 용이해진다.
- ex) 다른 객체들에 상관없이 한 기능을 수행할 수 있도록 함 => 특정 한 기능만을 테스팅 하기에 용이하다.
728x90
'🦁 걸어봐 위엄 라잌어 라이옹 > 👀 주차별 과제' 카테고리의 다른 글
[대학교멋사🦁/OOD] 5. 의존과 DI(의존 주입) (0) | 2023.05.05 |
---|---|
[대학교멋사🦁/OOD] 3. 상속 보다 조립 (0) | 2023.05.04 |
[대학교멋사🦁/OOD] 2. 다형성 추상화 (0) | 2023.05.04 |
[대학교멋사🦁/OOD] 1. 객체 | 캡슐화 (1) | 2023.05.04 |
[대학교멋사🦁/JAVA] Assignment_2회차_3 (1) | 2023.04.28 |