관점 - 프로그래머가 보는 시각
계약에 의한 설계
함수와 함수를 호출하는 쪽이 서로 계약을 맺고 있다고 간주하고 프로그래밍 하는것을 가리켜 계약에 의한 설계라고 한다. 계약한 내용을 미리 함수의 주석으로 알려주자 계약이행의 확인을 위한 코드는 단정문으로 표현하자.
주의점
- 함수쪽에서는 파라미터를 조정하지 않는다
- 함수쪽의 단정문을 사용자 입력확인에 사용하지 않는다.
- 함수쪽에서는 상정은 엄격하고 확약은 관용적으로
클래스 불변 표명
클래스가 클래스를 사용하는쪽에 대해 항상 참이 된다는것을 보증하는 조건
트래시보다는 크래시
코드 실행중에 있을수 없는 일이 발생했을때는 재빨리 크래시가 정론이다.
방어적 프로그래밍
- 외부 소스에서의 데이터 입력값을 확인한다.(상정 내의 오류 검출)
- 함수의 입력 파라미터 값을 확인한다.(상정 외의 오류를 검출)
방어적 프로그래밍을 통해 안전해진다.
- 개발중의 안전 운전
- 운용 중의 안전 운전
바리케이트 전략을 취하자 데이터를 격리시키고 필터링해서 정확한데이터를 쓰는 전략이다.
다양한 오류처리 방법
- 무해한 값을 반환한다.
- 다음 데이터로 대신한다.
- 이전과 같은 값을 반환한다.
- 가장 가까운 유효값으로 대신한다.
- 로그에 기록한다.
- 오류를 반환한다
- 오류 처리 함수를 호출한다.
- 오류 메시지를 표시한다.
- 처리를 중지한다.
- 각 위치에서 최적인 오류 처리를 선택한다.