더북(TheBook)

프로그램이 결과를 반환하지 않는다면 관찰 가능한 효과를 부수 효과라고 부를 수 없을 것이다. 왜냐하면 결과를 반환하지 않는 프로그램에서는 상태 변화가 주된 효과이기 때문이다. 하지만 그런 경우에도 여전히 (이차적인) 부수 효과가 있을 수 있다. 물론 이런 부수 효과는 ‘단일 책임(single responsibility)’ 원칙이라는 실무 지침을 위배하는 좋지 못한 기법이다.

안전한 프로그램은 인자를 받아서 값을 반환하는 여러 함수를 합성해 만들어진다. 그리고 그런 함수 합성이 프로그램을 이루는 전부다. 우리는 함수 안에서 어떤 일이 벌어지는지 신경 쓰지 않는다. 왜냐하면 이론적으로 함수 안에서는 아무런 일도 벌어지지 않기 때문이다. 일부 언어는 부수 효과가 없는 함수를 제공한다. 그런 언어로 작성된 프로그램은 반환 값 외에는 아무런 효과도 관찰할 수 없다. 하지만 실제로는 반환하는 값이 (프로그램을 실행할 때 상태 변이를 통해 발생하는) 효과를 계산하고자 실행하는 새로운 프로그램일 수도 있다. 이런 식으로 효과를 만들어내는 프로그램을 반환하는 기법은 언어와 무관하게 사용할 수 있지만, 종종 비효율적인 기법이라고 여겨진다(이에 대해서는 논란의 여지가 있다). 그보다 더 안전한 대안은 효과 계산 때문에 일어나는 상태 변이와 프로그램의 나머지 부분을 분리하거나 심지어는 효과를 계산하는 부분을 최대한 추상화하는 것이다. 이와 관련된 여러 기법을 7, 11, 12장에서 살펴보겠다.

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