여태까지 함수형 프로그래밍이 어떤것이다 라는 정의에 대해서만 수도없이 들어왔다.

 

그리고 함수형 프로그래밍을 완전히 개발에 적용하지는 않았지만 의미에 대해선 어느정도 감도 잡혔을 것이다.

 

내 생각에는 함수형 프로그래밍이란, 모든 로직 과정을 함수를 사용해 '공장화' 시키는 것이라는 표현이 가장 와닿는다고 생각한다.

 

공장의 레일은 모든 '단순 입출력'들의 집합이고 이 모든 입출력 값들이 임무를 수행해 최종 결과값을 얻게 된다.

 

이것으로 인한 이점은 이러한 하나의 공장 레일을 통해서 '이 과정에선 어떤것을 하는구나' '이러한 명칭들의 과정들이 있구나' 라고 생각할 수 있고 짜임새 있는 생산적인 코드를 작성할 수 있게 된다.

 

공장화 시각화

arr.과정1( ... )
    .과정2( ... )
    .과정3( ... );

 

 

우리는 이제 이것들을 개발에 적용해야 한다.

여태까지 일반 for문, 여러번의 변수 사용 등 우리가 했던 습관들을 접어야 한다.

 

나는 함수형 프로그래밍을 적용한다는 것이

"함수를 함수형 프로그래밍 형식에 따라 선언하고

그 함수를 공장 레일 중 한 입출력 과정으로 사용하는 것"이라 생각했다.

다시 말해 과정(중간 함수) '생성'을 중점적으로 고민해야 되는 것인줄 알았다.

 

하지만 함수형 프로그래밍은 생성 보다 활용이 중심이다.

이미 JavaScript 엔진에 탑제된 기본함수 들을 중간과정으로 활용하는 것에 더 초점을 맞춰야 하는 것이다.

그러면 함수형 프로그래밍을 하기 위해선 무엇보다 그 언어에 기본적으로 탑제된 중요한 함수나 객체에 대해서 알아야 한다.

가장 많이 나오는 예시중 하나가 map, filter고 이것은 Array객체에 들어있는 메소드이다.

 

이와 같은 기본 함수(정확한 명칭은 아니지만 내 표현이다)을 잘 사용하기 위해,

기본함수들의 리턴값에 대해서 인지를 해야 한다

우리는 함수의 사용법과 어느 인스턴스의 메소드인지에 대해서만 중점적으로 보는 경향이 있다.

하지만 함수형 프로그래밍을 적극적으로 활용하기 위해선 리턴값에 대해서 더 중점적으로 봐야 한다.

"A 함수의 리턴값은 K타입이라 K타입 메소드인 B함수를 활용해 데이터를 계속 가공해 나갈수 있구나"

 

 

 

결국 함수형 프로그래밍은

기본 적제되있는 함수, 객체의 메소드를 최대한으로 활용해서 코드를 작성하면 되는것이다.

참 쉽다.

 

유연한 내장 함수 활용을 위해 위에 언급한 것들을 생각하면서 함수형 프로그래밍 코드를 작성해 나갈 것이다.

 

우선 여태까지 만들었던 실무 프로젝트들을 함수형 프로그래밍으로 만들어 봐야겠다..

 

+ 최종적으로 RxJS를 사용한 프로그래밍을 할 것이다

 

 

 

 

 

https://pul8219.github.io/javascript/js-fp-step49/

 

[JS] 자바스크립트 함수형 프로그래밍(인프런) 정리 (STEP 49)

함수형 프로그래밍, 함수형 프로그래밍으로의 전환

pul8219.github.io