[DDD] ASSERTION(단언)

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

DDD

목록 보기
11/22

필요성

  • 연산의 부수효과가 단지 구현에 의해서만 함축적으로 정의될 때 다수의 위임을 포함하는 설계는 인과 관계로 혼란스러워진다.

  • 프로그램을 이해하려면 분기 경로를 따라 실행 경로를 추적하는 수밖에 없다.

  • 이렇게 되면 캡슐화의 가치가 사라지고, 구체적인 실행 경로를 추적해야 한다는 필요성으로 추상화가 무의미해진다.

사후조건과 사전조건

  • 사후조건은 연산의 부수효과를 의미하며, 호출되는 연산에서 보장하는 결과를 기술

  • 사전조건은 계약에 명시된 단서 조항와 유사하며 사후조건이 유효하기 위해 충족돼야 하는 조건들을 기술

단언

  • 단언에는 절차를 기술하지 않고 상태만 기술하므로 분석하기가 쉽다.

  • 연산의 사후조건과 클래스 및 AGGREGATE를 불변식으로 명시하라.

  • 프로그래밍 언어를 사용해서 프로그램 코드에 직접 ASSERTION을 명시할 수 없다면 자동화된 단위 테스트를 작성해서 ASSERTION의 내용을 표현하라.

  • 개발자들이 의도된 ASSERTION을 추측할 수 있게 인도하고, 쉽게 배울 수 있고 모순된 코드를 작성하는 위험을 줄이는 응집도 높은 개념이 포함된 모델을 만들려고 노력하라.

0개의 댓글