- 사전조건: 입력파라미터의 유효성 체크 (호출자가 체크함)
- 사후조건: 함수 반환 값의 유효성 체크 (함수 컴포넌트 스스로가 체크함)
- 불변식(invariant): 함수가 실행되는 동안에 일정하게 유지되는 것, 함수의 로직에 문제가 없는지 확인하기 위한 것
- 부작용
이렇게 계약에 의해 디자인을 하는 이유는
- 오류가 발생할 때 쉽게 찾아낼 수 있기 때문!
- 더 중요한 것은 잘못된 가정 하에 코드의 핵심부분이 실행되는 것을 방지하기 위해서!
- 책임의 한계를 명확히하는데 도움이됨!
- 사전조건은 "런타임" 중에 확인할 수 있다는 점을 기억하는 것이 중요!
- 사전조건에 맞지 않는다면 실행하지 않아야 한다!
유효성 검사의 2가지 접근법
1. 관용적인(tolerant) 접근법
: 클라이언트가 함수를 호출하기 전에 모든 유효성 검사를 하도록 함
2. 까다로운(demanding) 접근법
: 함수가 자체적으로 로직을 실행하기 전에 검사하도록 하는 것
=> 일반적으로 가장 안전하고 견고한 방법
여기서 잠깐!
관용적인 것을하던 까다로운 것을 하던 둘중 하나만! 왜?! 중복제거 원칙!