- Design By Contract (DBC)
- 선행조건 : 요구사항
- 후행조건 : 자기가 할 것이라 보장하는 것.
- 클래스 불변식 : 호출자 입장에서 항상 참이라고 클래스가 보장함.
- 서브 클래스는 사용자가 차이점을 모르고서도 기반 클래스 인터페이스를 통해 사용할 수 있어야 한다.
- 선행, 후행에 대한 조건들을 주석으로 기록
- 단정문 : 선행조건들을 체크한다.
- 언어 지원 : 컴파일러 혹은 런타임에서 자동으로 검사하게 선처리 시킨다.
- 루프 불변식 : 최소값, 최대값등의 불변하는 최종 목적에 대한 체크
- 의미론족 불변식 : 오류 발생시 소비자의 입장을 우선하라.
- 동적 계약과 에이전트 : 계약 조건의 변화에 따른 생산성 위기의 대처와 계약사항의 설계
- '그런 일은 절대 일어날 리 없어' 라는 사고에 빠지기 쉽다.
- 망치지 말고 멈추라.
- 진짜 에러처리 대신에 단정문을 사용하지 마라. (단정문은 결코 일어나서는 안되는 걸 검사한다.)
- 성능이나 필요에 따라 단정 기능을 On/Off 하자.
- 에러 처리기를 이용한 에러 감지
25) 리소스 사용의 균형
- 리소스를 할당하는 루틴이 해제 역시 책임져야 한다. ( 할당과 해제의 책임소제를 분명하게 하자.)
- 중첩 할당 : 리소스를 할당한 순서의 반대로 해제. 여러곳에서 동일 리소스 집합을 할당할 경우는 할당순서를 항상 같게처리.
- 객체와 예외 : 예외로 인한 리소스 해제가 방해받는 경우에 가지고 있는 리소스를 해제한다.
- 균형과 예외 : 지역 객체는 자신의 블럭을 나갈때 자동 파괴된다. (auto_ptr : 노드 나갈때 자동 해제)
- 리소스 사용의 균형을 못잡는 이유 : 선택한 방법에 대해 일관성 있게 구현해야 한다. (하지만 사용하는 데이터 구조의 상황은 달라진다.)
- 균형 점검 : 메모리 누수 체크, 리소스 사용량 체크 등.