더북(TheBook)

16.5 디버깅

minutesecond의 값이 0~60이고(0은 포함하지만, 60은 포함하지 않음) hour가 양수이면 Time 객체는 올바른 형식이다. hourminute는 정숫값이어야 하지만, second는 분수 부분을 가질 수 있다.

이와 같은 요구사항은 항상 참이어야 하므로 이를 불변 조건(invariant)이라고 한다. 달리 말해서 요구사항이 참이 아니라면 뭔가 잘못되었다는 뜻이다.

불변 조건을 검사하는 코드를 작성하면 오류를 발견하고, 원인을 찾는 데 도움이 된다. 예를 들어 Time 객체를 받아서 불변 조건을 위반하면 False를 반환하는 valid_time 같은 함수가 있다고 하자.

def valid_time(time):

if time.hour < 0 or time.minute < 0 or time.second < 0:

return False

if time.minute >= 60 or time.second >= 60:

return False

return True

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