Page 17 - 006963
P. 17
11.1 함수형 프로그래밍의 제약과 이점
Refacto R ing JavaSc R ipt
일반적으로 함수형 프로그래밍은 전형적인 자바스크립트 개발자들에게 익숙한 것보다 좀 더 많은
구조를 요구하고, 이 구조로 어떤 측면에서는 더 나아질 수도 있으며, 새로운 문제가 될 수도 있습
니다. 이 절에서는 함수형 스타일을 시도하려고 할 때 기본적으로 고려해야 할 몇 가지 균형을 살
펴보겠습니다.
11.1.1 제약 11
다음은 비함수형 스타일로 함수형 프로그래밍 스타일을 비난하는 데 흔히 사용되는 일반적인 코 함수형 프로그래밍
드입니다.
x = 1;
x = x + 1;
이것이 전부입니다. 아무 문제없어 보이지만, 실제로는 문제가 많습니다. 하지만 대부분의 자바
스크립트 개발자에게 이 코드는 아무 문제가 없습니다. 다만 몇몇 사람에게는 함수 안에서 범위를
지정하려고 var 선언을 하지 않은 첫 번째 할당 부분이 거슬릴 수 있습니다. 이 부분에 대해 다른
사람은 블록(block) 수준의 범위를 지정하려고 let을 원할 수도 있습니다. 일찍이 책에서 논의했듯
이, 여기서 정말 원하는 것은 두 번째 줄에서 재할당되는 것을 방지하는 const입니다. 수학 시간
이었다면 칠판에 값을 다시 할당할 수 없다는 점은 우스꽝스럽게 보일 것입니다.
앞 장에서 재할당이 프로그램을 어떻게 더 복잡하게 만드는지 다루었습니다. 그러나 재할당은 엄
격하게 실용적인 것보다 약간 더 많은 의미가 있습니다.
이 두 코드 줄을 수학적인 사실에서 생각해 본다면, x는 1과 같거나 x가 어떻게든 1과 1 + 1을 동
일하게 하는 것일까요? 분명하게 이것은 프로그램 어디에 있느냐에 달려 있습니다. 그래서 이 구
문은 더 이상 x에 관한 사실로 볼 수 없습니다. 사실(함수형 측면에서 값을 지칭합니다) 대신 변수
할당을 취하고 있는 셈입니다. 값은 변하면 안 됩니다. 값을 변화시킨다면 프로그램은 연산보다
일련의 과정처럼 보일 수 있습니다.
425
리팩토링 자바스크립트(본문)최종.indd 425 2018-09-19 오전 1:31:34