연산의 부수효과가 단지 구현에 의해서만 함축적으로 정의될 때 다수의 위임을 포함하는 설계는 인과 관계로 혼란스러워진다.
프로그램을 이해하려면 분기 경로를 따라 실행 경로를 추적하는 수밖에 없다.
이렇게 되면 캡슐화의 가치가 사라지고, 구체적인 실행 경로를 추적해야 한다는 필요성으로 추상화가 무의미해진다.
사후조건은 연산의 부수효과를 의미하며, 호출되는 연산에서 보장하는 결과를 기술
사전조건은 계약에 명시된 단서 조항와 유사하며 사후조건이 유효하기 위해 충족돼야 하는 조건들을 기술
단언에는 절차를 기술하지 않고 상태만 기술하므로 분석하기가 쉽다.
연산의 사후조건과 클래스 및 AGGREGATE
를 불변식으로 명시하라.
프로그래밍 언어를 사용해서 프로그램 코드에 직접 ASSERTION
을 명시할 수 없다면 자동화된 단위 테스트를 작성해서 ASSERTION
의 내용을 표현하라.
개발자들이 의도된 ASSERTION
을 추측할 수 있게 인도하고, 쉽게 배울 수 있고 모순된 코드를 작성하는 위험을 줄이는 응집도 높은 개념이 포함된 모델을 만들려고 노력하라.