p 145~180 Topic 23. 계약에 의한 설계 (DesignBy Contract,DBC) 모든 입력값에 성공과 실패를 정의한다. 문제를 찾고 원인을 밝히기 위해서는 사고가 난 지점에서 멈추는 것이 유리 의미론적 불변식, 어겨서는 안되는 요구사항을 표현 Topic 24. 죽은 프로그램은 거짓말을 하지 않는다 방어적 프로그래밍은 시간 낭비, 코드가 망가지면 그냥 멈추는게 낫다. 죽은 프로그램이 끼치는 피해가 이상한 상태의 프로그램이 끼치는 피해보다 훨씬 적다. Topic 25. 단정적 프로그래밍 단정문으로 절대 일어나지 않을것 같은 불가능한 상황을 예방해야한다. 진짜 오류처리를 해야하는 곳에 단정을 사용하지 않는다. 단정을 잘못 사용하면 디버깅이 디버깅하는 시스템의 행동을 바꿔버리는 하이젠버그적인 문..