278
러닝 자바스크립트
“그렇게 하면 프로그램이 좀 더 수학과 비슷해지니까” 라고 대답할 수도 있겠지만, 그렇게 대답
하면 “프로그램이 수학과 비슷해지면 뭐가 좋은데?” 라는 반문이 따라올 겁니다. “순수한 함수
를 쓰면 코드를 테스트하기 쉽고, 이해하기 쉽고, 재사용하기도 더 쉬우니까” 처럼 대답하는 편
이 좋습니다.
함수가 상황에 따라 다른 값을 반환하거나 부작용이 있다면 그 함수는
컨텍스트에 좌우되는 함
수
입니다. 어떤 함수가 정말 유용하더라도 부수 효과가 있다면, 그리고 그 함수가 쓰이던 프로
그램이 아닌 프로그램에서 사용하려 한다면 문제를 일으킬 수 있습니다.
99
%는 제대로 동작하
다가
1
%의 상황에서 버그를 일으키는 상황은 더 심각합니다. 프로그래머라면 누구나 깨닫고
있겠지만, 가장 악질적인 버그는 숨어 있는 버그입니다. 이런 버그는 오랫동안 발견되지 않기
때문에, 문제가 있다는 걸 알게 되더라도 찾기가 정말 어렵습니다.
필자가 순수한 함수를 권장하는 건지 궁금하다면, 답은 그렇다 입니다.
항상 순수한 함수를 쓰
는 습관을 들이는
편이 좋습니다. ‘습관’이라고 한 건, 가끔은 함수에 부수 효과가 있더라도 그
냥 쓰는 편이 훨씬 쉬울 때가 있기 때문입니다. 초보 프로그래머라면 그런 때가 더 많을 겁니
다. 그러지 말라는 건 아닙니다. 단지, 잠시 멈추고 순수한 함수를 사용하는 방법이 있는지 생
각해 보라는 말입니다. 시간이 흐르면, 자연스럽게 순수한 함수를 더 많이 쓰게 될 겁니다.
9
장에서 설명한 객체지향 프로그래밍은 스코프를 밀접하게 ...