더북(TheBook)

첫째 줄은 기본 작업을 수행한다. 나머지 코드는 앞서 본 특수 케이스를 다룬다.

이 함수는 올바를까? seconds60보다 훨씬 더 크다면 어떻게 될까?

그런 경우엔 자리 올림 한 번으로는 안 된다. 즉, time.second60보다 작을 때까지 자리 올림을 반복해야 한다. 한 가지 해법은 if 문을 while 문으로 바꾸는 것이다. 이렇게 하면 함수는 올바르게 되지만, 너무 비효율적이다. 연습삼아 루프를 사용하지 않으면서 올바르게 동작하는 버전의 increment를 작성하라.

변경자로 할 수 있는 것은 순수 함수로도 할 수 있다. 실제로 일부 프로그래밍 언어는 순수 함수만 사용할 수 있다. 순수 함수만 사용하는 프로그램이 변경자를 사용하는 프로그램보다 더 빠르게 개발할 수 있고, 오류도 더 적다는 몇 가지 근거도 있다. 그러나 때로는 변경자가 편리하고, 함수형 프로그램이 덜 효율적일 때도 있다.

일반적으로 합리적인 경우에만 순수 함수를 작성하고, 강력한 이점이 있는 경우에만 변경자를 사용하는 것을 권장한다. 이러한 접근 방식을 함수형 프로그래밍 스타일(functional programming style)이라고 한다.

연습삼아 인자를 변경하는 대신 새로운 Time 객체를 생성해서 반환하는 increment순수 버전으로 작성해보라.

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