더북(TheBook)

16.4 프로토타입 대 계획

내가 설명하는 개발 계획은 프로토타입과 패치라고 한다. 각 함수에 대해서 기본 계산을 수행하는 프로토타입을 작성하고, 테스트하고, 오류를 패치했다.

이런 접근 방법은 효율적일 수 있고, 특히 자신이 해당 문제에 대해 깊이 이해하지 못하고 있다면 더 그렇다. 그러나 점진적인 수정이 쌓이면 필요 이상으로 코드를 복잡하게 만들 수 있고(특수 케이스를 많이 다루기 때문에 그렇다) 불안정하게 만들 수 있다(오류를 모두 발견했는지 알기 어렵기 때문에 그렇다).

그래서 다른 방법은 디자인과 개발이다. 문제에 대한 수준 높은 통찰을 통해 프로그래밍을 매우 쉽게 만드는 것이다. 이 예에서 통찰은 Time 객체가 60진법으로 된 세 자리 숫자라는 것이다(위키피디아의 60진법 항목(https://en.wikipedia.org/wiki/Sexagesimal)을 참조하자). second 속성은 1이고, minute 속성은 60이고, hour 속성은 3600이다.

add_timincrement를 작성했을 때 실제로는 60진법으로 덧셈을 한 것인데, 이는 다음 열로 올림을 하기 때문이다.

이러한 관찰에서 문제 전체에 대해 다른 접근 방식을 선택할 수 있다. Time 객체를 정수로 변환하고, 컴퓨터가 정수 연산을 어떻게 처리하는지 알고 있다는 사실을 이용하는 것이다.

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