본문 바로가기

DDD/도메인 주도 설계 철저 입문

도메인 규칙을 코드로 제대로 표현하는 법 - 「도메인 주도 설계 철저 입문」 11장 (4)

 

 

말과 코드를 일치 시키기

"써클 정원은 30명이다"라는 도메인 규칙은 다음과 같이 표현하는 것이 바람직하다. 규칙에 나오는 "30"이라는 숫자를 코드에 그대로 사용하는 것이다. 

// 바람직한 예 : 말과 코드가 일치한다.
if (member.size() >= 30) {
    throw new IllegalStateException("정원 초과");
}

 

만약 다음과 같이 말과 코드가 불일치 하게 되면 여러가지 문제가 생긴다. 

if (member.size() > 29) {
    throw new IllegalStateException("정원 초과");
}

 

1. `30`으로 코드 전역 검색을 했을 때 코드가 나오지 않음

2. 누군가 말과 다른 코드를 보고 오류라고 생각해서 29를 30으로 고칠 우려가 있음

 

 

규칙을 도메인 객체에 모아 놓기

"써클 정원은 30명이다"는 저자의 표현을 빌리자면 중요도가 높은 도메인 규칙이다. 따라서 이를 써클의 앱 서비스에는 쓰지말고, 써클클래스(도메인 클래스)에 한 번만 써야 한다.