더북(TheBook)

다음으로 이벤트 메서드를 정의해서 어떻게 작동하는지 살펴보자.

Note 순수함수

React뿐만 아니라 컴퓨터 공학에서 말하는 일반적인 순수함수의 특징은 다음과 같다.

• 같은 입력에 대해 항상 같은 출력

• 부수효과가 없다(외부 상태를 변경하지 않는다).

• 외부 상태에 의존하지 않는다.

예를 들어 f(x) = 2x는 입력 값이 두 배가 되는 순수함수다. 자바스크립트나 Node.js에서는 lef f = (n) => 2*n이라고 쓸 수 있다. 실행해보면 다음과 같다.

let f = (n)=>2*n
consoleg.log(f(7))

순수하지 않은 함수는 값을 두 배로 만들기 위해 다음과 같은 방식을 사용한다(한 줄로 작성한 화살표 함수에 중괄호를 추가해서 암묵적으로 반환되지 않도록 했다.)

let sharedStateNumber = 7
let double
let f = ()=> {double =2*sharedStateNumber}
f()
console.log(double)

순수함수는 함수형 프로그래밍의 기초다. 함수형 프로그래밍은 상태를 가능한 한 최소화한다. 개발자, 특히 함수형 프로그래밍을 사용하는 프로그래머는 순수함수를 가장 선호하는데, 순수함수를 사용하면 공유 상태(shared state)를 완화하여 개발 과정이 단순해지고 개별 로직를 분리할 수 있기 때문이다. 또한, 테스트도 쉬워진다. React의 경우에는 상태비저장 컴포넌트를 더 많이 사용하고 의존성을 적게 가질수록 좋다는 것을 이미 알고 있을 것이다. 순수함수를 생성하는 것이 모범 사례인 이유가 이 때문이다.

어떤 면에서는 함수형 프로그래밍과 객체지향 프로그래밍 사이에 모순점이 있다. 함수형 프로그래밍 지지자들은 Fortran과 Java가 프로그래밍의 막다른 길이었으며, Lisp(요즘은 Clojure와 Elm)야말로 프로그래밍이 나아가야 할 방향이라고 말한다. 관심을 가져야 할 논쟁이다. 개인적으로 나는 함수형 프로그래밍에 약간 편향되어 있다.

함수형 프로그래밍은 수십 년간 다뤄진 개념이므로 이에 대한 좋은 책이 많다. 그러므로 여기서 자세하게 설명하지는 않을 것이다. 하지만 함수형 프로그래밍에 대해 좀 더 공부할 것을 추천한다. 왜냐하면 함수형 프로그래밍을 업무에 활용하지 않는다 하더라도 더 나은 프로그래머가 되는 데 도움이 될 것이기 때문이다.

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