[DDD] SIDE-EFFECT-FREE FUNCTION

0️⃣1️⃣·2024년 2월 12일
0

DDD

목록 보기
10/22

명령과 질의

  • 연산은 크게 명령과 질의라는 두 가지 범주로 나눌 수 있다.

  • 질의는 변수 안에 저장된 데이터에 접근하거나, 저장된 데이터를 기반으로 계산을 수행해서 시스템으로부터 정보를 얻는 연산을 의미한다.

  • 명령은 변수의 값을 변경하는 등의 작업을 통해 시스템의 상태를 변경하는 연산을 의미한다.

함수

  • 부수효과를 일으키지 않으면서 결과를 반환하는 연산을 함수라고 한다.

  • 함수는 여러 번 호출해도 무방하며 매번 동일한 값을 반환한다.

  • 함수는 중첩된 깊이에 대해 걱정하지 않고 다른 함수를 호출할 수 있다.

  • 함수는 부수효과를 지닌 연산에 비해 테스트하기 쉽다.

함수 만들기

  • 변경을 발생시키는 메서드는 도메인 데이터를 반환하지 않아야 하고 가능한 한 단순하게 유지해야 한다.

  • 명령과 질의를 분리하는 대신 연산의 결과를 표현하는 새로운 VALUE OBJECT를 생성해서 반환한다.

  • 부수효과를 단순한 명령 메서드 내부로 격리하는 작업은 당연히 ENTITY에 대해서만 적용한다.

  • 수정과 질의를 분리하는 리팩터링을 마치면 복잡한 계산을 처리하는 책임을 VALUE OBEJCT로 옮기는 두 번째 리팩터링을 고려한다. (Calculator)

0개의 댓글