Closed y2o2u2n closed 3 years ago
예시 : SQL, css,,
문제를 내고, 푸는 방법을 표현하면 안됨
command 를 도메인 정보를 반환하지 않는 단순한 연산으로 분리 책임에 적합한 개념이 나타나면 로직을 Value Object 로 옮겨 side effect 를 통제
기존에 사용하던 requireNonNull, assertEquals 이런 개념인 것 같은데
예시가 이해가 잘 안됨. 갑자기 왜 분리하는지
새로 알게 된 개념이나 요구사항을 코드에 적용
반복적인 리팩토링으로 유연한 설계
예시에서 나온 CONCEPTUAL CONTOUR 는 Payment 인가? (조기 상환 및 연체 상환 처리 규칙이 추가되는 과정에서 여기에 개념이 들어감)
중간 정리
INTENTION-REVEALING INTERFACE: 클라이언트에 의미 단위로 객체를 제공하게 해줌 SIDE-EFFECT-FREE FUNCTION, ASSERTION: 위를 사용한 복잡한 조합을 만드는 일을 안전하게 CONCEPTUAL CONTOUR: 모델의 각 부분이 안정화되고, 단위를 직관적으로 사용하고 조합할 수 있게 됨
return type 과 parameter type 이 동일한 연산 정의
DSL 따로 있는게 아니고 우리가 정의할 수 있음
드디어 절반을 넘음 읽으면서 정리가 잘 안되네요....
Class Person {
private int age;
}
Class PeopleGroup {
private List
// 이런 로직들도 닫히도록 짜야할까요??
private List
private List
### COMMAND와 SIDE-EFFECT-FREE FUNCTION의 분리 p304
COMMAND, QUERY를 분리해서 결과적으로
Map distribution = aLoan.calculatePrincipalPaymentShares(paymentAmount); // 배분할 금액 계산 == query aLoan.applyPrincipalPaymentsShares(distribution); // 상태 변경 == command
이렇게 되면 해당 코드 2줄은 어디에 있는게 좋을까요?? 응용 서비스 계층 OR 도메인 서비스 계층.
### Value Object의 역할이 생각보다 크구나라고 느낌
VO는 단순 값객체로 보았는데, 해당 객체에도 로직이 포함되는거를 보고 생각보다 역할이 크다고 느낌.
ENTITY랑 다른 점은 상태가 변경되지 않고 매번 새로운 객체가 생김.
이번 장은...
의도를 드러내는 인터페이스
클래스와 연산의 이름을 지을 때...
부수효과가 없는 함수
단언
개념적 윤곽
독립형 클래스
연산의 닫힘
선언적 설계
예시