더북(TheBook)

4.10 디버깅

인터페이스는 함수와 호출자 사이의 계약과 같다. 호출자는 어떤 인자를 제공할지 동의한 것이고, 함수는 어떤 동작을 할지 동의한 것이다.

예를 들어 polyline4개의 인수가 필요하다. tTurtle 객체여야 하고, n은 정수, length는 양수, angle은 각도에 쓸 수 있는 숫자여야 한다.

이러한 요구 사항은 함수를 실행하기 전에 반드시 마련되어야 하므로 사전 조건(precondition)이라 한다. 반대로 함수의 종료에 필요한 조건을 사후 조건(postcondition)이라 한다. 사후 조건에는 함수의 의도한 효과(여기서는 선분 그리기)와 나머지 부수 효과(side effect, 여기서는 Turtle이 이동하거나 다른 상태 변화)가 포함된다.

사전 조건은 호출자가 책임을 진다. 호출자가 사전 조건(문서화를 잘하자!)을 어겼다면 함수는 올바르게 동작하지 않을 것이고, 버그는 함수가 아니라 호출자에게 있는 것이다.

사전 조건은 만족하지만, 사후 조건은 만족하지 않는다면 버그는 함수에 있는 것이다. 사전 조건과 사후 조건에 문제가 없다면, 이들 조건이 디버깅에 도움이 될 수 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.