- 메서드에 전달된인자의 정합성을 체크하기 위해 사용
- 일반적으로 Contract.Requries(...) 와 같은 사전조건으로 정의함으로써
메서드가 잘못된 값을 기반으로 실행되는 것을 방지.
- 만약 사전조건을 만족시키지 못한다면, 최대한 빨리 실패해서
클라이언트에게 버그가 있다는 사실을 알려야 한다.
- 사후조건을 만족시키는 함수는 일반적으로 Contract.Ensures 메서드를 활용
- BasicRatePolicy 메소드의 사후조건은 result 인스턴스가 ZERO보다 크거나
같으면 안된다.
- 인스턴스 변수의 상태가 올바른지를 서술하기 위해.
- 메서드에 전달된 파라미터의 값이 올바르게 변경됐는지를 서술하기 위해
- 반환값이 올바른지를 서술하기 위해
21.
사전조건과 사후조건은 각메소드마다 달라지는 데 반해 불변식은 인스턴스 생명주기 전반
에 걸쳐 지켜져야 하는 규칙을 명세.
- 불변식은 클래스의 모든 인스턴스가 생성된 후에 만족돼야 한다. 이것은 클래스에 정의된
모든 생성자는 불변식을 준수해야 한다는 것을 의미한다.
- 불변식은 클라이언트에 의해 호출 가능한 모든 메서드에 의해 준수돼야 한다. 메서드가 실
행되는 중에는 객체의 상태가 불안전한 상태로 빠질 수 있개 때문에 불변식을 만족시킬 필요
는 없지만 메서드 실행 전과 종류 후에는 항상 불변식을 만족하는 상태가 유지돼야 한다.
- 불변식은 생성자 실행 후, 메서드 실행 전, 메서드 실행 후에 호출돼야 한다.
- 모든 생성자의 마지막 위치와, 메서드 시작 지점, 메서드 종료 지점에 불변식을 호출하도록
일일이 코드를 작성.