TIL: 함수형 프로그래밍 사고
‘쏙쏙 들어오는 함수형 코딩’이라는 책이 아주 명쾌하다더라.
산책 겸 서점까지 갔지만 안 팔길래 글 먼저 찾아보았는데, 새로운 접근이어서 좋았다. 읽어본 지인의 말로는 이게 전부(핵심)라는데…
- 함수형 프로그래밍의 설명만 찾아보면, 마치 부수 효과가 포함된 코드를 작성하는 사람을 죄인 취급하는 기분이다. 하지만 프론트엔드에서 부수 효과가 없는 프로그래밍은 애초에 가능하지도 않다.
- 코드를 데이터, 계산, 액션으로 분류한다.
- 데이터는 그냥 데이터다. 실행 불가능한 변수 쪼가리다.
- 계산은 입력값을 계산하여 출력하는 함수다. 예를 들면
sum
함수. 언제 어디서든 입력값이 동일하면 출력값도 동일하지만, 함수 외부의 그 무엇(데이터 등)에도 영향을 주어서는 안 된다. 이것이 함수형 프로그래밍에서 늘 강조하던 순수 함수다. - 액션은 계산과는 다르게, 언제 몇 번이나 실행되는지에 따라 결과가 달라질 수 있다. 데이터도 아니고 계산도 아닌데 함수 안에서 이것저것 다 하고 있다? 그럼 그게 액션이다. 부수 효과가 잔뜩 있는 셈.
- 불변성 유지는 그냥 deep copy 하면 된다. 방어적 복사라고 하는데, 4년인가 5년 전 코드스피츠 강의에서 배웠다. 지금은 늘 하는 거니까.
- JavaScript는 멀티 패러다임 언어다. 매몰될 필요 없이 장점만 챙기면 된다. (프로그래밍뿐만 아니라 무엇을 하든, 도구에 매몰되지 않고 적절한 상황에 적절한 도구를 쓰는 것이 중요하다. 은탄환은 없다.)