點燈坊

失くすものさえない今が強くなるチャンスよ

タグ : FP

實務上使用 FP 開發一年心得總結

隨著一年來都以 ECMAScript 為主力,前後端都搭配 Ramda 以 FP 開發,從一開始抱持著懷疑與摸索心態,逐漸地將 FP 原則套用在實際開發上後,發現 FP 並不只是理論而已,而是真的可以用在實戰,雖然學習門檻較高,但只要跨越之後,Codebase 可讀性與可維護性日後都會賺回來。

FP 之 Type Signature Notation

無論學習 Ramda、Crocks 或 Sanctuary,會發現其文件有一種有別於 TypeScript 的 Type 表示法,稱為 Hindley-Milner Type System,這種表示法用於 Haskell,為 FP 廣泛使用的 Type 描述方式。

FP 之 Pure Function 與 Side Effect

Functional Programming 要求 Data 與 Function 分離,其中 Data 要求的是 Immutable,而 Function 則是 Pure Function。這是 FP 的兩大基石,所有其他的特性都是由這兩個基本原則展開。

FP 之 Immutable

剛接觸 FP 時,Immutable 是讓我最不可思議的概念,Variable 天生就是拿來給人修改的,但 FP 卻教人 Immutable 不可修改,這是什麼奇怪思想呢 ?

FP 之 Point-free

Curry Function 最主要的目的在於 Function Composition,所以儘管是 個 Argument,最後也可變成多個 單一 Argument 的 Function 方便組合;而 Point-free 正是最適合 Function Composition 寫法。

如何學習 Functional Programming ?

Functional Programming 近年逐漸受到重視,尤其 ECMAScript 本身具有 Functional 特質 (First-class Function、Closure、Higher-order Function),再加上 React、Redux、RxJS、Ramda … 等推波助瀾,FP 從理論走向實務,但也由於 FP 與 OOP 思維迥異,因此很多人視 FP 為異端而裹足不前,本文整理出 FP 三個最重要心法幫助大家學習。