Page 23 - 006963
P. 23

따라서 이를 개선하려고 다음 코드를 추가하면 두 번째 호출에서는 캐시가 활성화되는 것을 볼 수

                        있습니다.

                          const lookup = memoizedFactorial(10)['lookupTable'];
                          console.log(memoizedFactorial(10, lookup));


                        함수를 사용하여 메모이제이션할 수 있는 다른 방법도 있습니다. 어떤 메모이제이션은 임의 함수
                        를 감싸려고 만들기도 했지만, 여기서는 다루지 않을 것입니다. 어쨌든 메모이제이션 작성은 상황
                        에 따라 유용한 도구이지만, 설정에서 약간의 오버헤드를 가집니다.





                        11.1.3  함수형 프로그래밍의 전망(추측)                                                        11


                        FP에 관한 나쁜 소식으로 다시 돌아가 봅시다. 일부 함수형 프로그래밍 개념은 아직 난해하지만,                             함수형 프로그래밍
                        장기적으로 볼 때 함수형 개발자들이 옳을 수도 있습니다. 자바스크립트에 영향을 미치는 모든 위
                        원회, 프레임워크, 패러다임 중에서 함수형적 생각은 많은 가망성을 보여 줍니다. 함수형은 실질

                        적으로 소프트웨어 품질 원칙을 기반으로 할 뿐만 아니라, 현재와 미래의 하드웨어(메모리는 저렴
                        하며 무어의 법칙을 따르기 위해 컴퓨터는 여러 코어와 함께 병렬 처리합니다) 상태에 대한 렌즈
                        이기 때문입니다. 즉, 다중 프로세서(또는 분산 시스템)가 있는 하드웨어를 사용하려면 병렬로 실
                        행할 수 있도록 실행 순서를 신경 쓰지 않는 함수형 코드가 필요합니다.

                        성능이 어떻게 품질 문제가 되기 시작했는지 알기는 어렵지 않습니다. 마음을 보는 수정 구슬이
                        여기에 있지는 않지만, “당신은 컴파일 실행 시간과 타입 검사로 참조적 투명성, 순수 함수, 함수

                        형, 동시성 코드를 작성하지 않았군요?”가 새로운 의미로 “당신은 단위 테스트를 작성하지 않았네
                        요?”가 되는 것이 그다지 억지스러운 일은 아닌 것 같습니다.

                        그러나 가장 좋은 소식은 책 앞부분에서 함수형 프로그래밍의 많은 부분에 이미 노력을 기울였다
                        는 것입니다. 재할당하지 않는 변수는 확실히 다루었던 부분입니다. 변수 범위를 엄격하게 유지하
                        고 함수와 변수를 변환하는 것은 이 시점에서 잘 다룰 수 있습니다. 다루지 않은 다른 부분도 대단
                        히 어렵지는 않습니다. 예를 들어 순수 함수와 비순수 함수를 분리하는 것은 앞에서 다룬 함수 추

                        출에 익숙하다면 어렵지 않습니다.










                                                                                                      431




         리팩토링 자바스크립트(본문)최종.indd   431                                                            2018-09-19   오전 1:31:34
   18   19   20   21   22   23