iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 10
1

什麼是 FP ?

是一種程式設計方法,核心精神是利用純函數的沒有副作用的特性,不斷的透過純函式,逐層推導出複雜的運算來解決問題。

FP Concept

Side Effect

運算的過程中,改變系統狀態或是對外部世界進行交互。

常見的 Side Effect
  • console.log()
  • 發送 HTTP Request

Pure Function

符合以下標準的我們稱之為 Pure funciton

  • 沒有副作用(No Side Effect)
    • Immutability:不會改變輸入的初始值
    • Referential Transparency:從輸入可以預期輸出,相同輸入相同輸出

First-Class

意義是 Function 和其他資料性別有相同地位

  • 可以儲存成變數
  • Function 可以作為另一個 Functionargument
  • Function 可以 return 另一個 Function

使用 Function 作為參數或回傳值的 Function 我們稱為 Higher Order Function(HOC)

常見的 HOC
  • Array.prototype.map()
  • Array.prototype.filter()
  • Array.prototype.reduce()
  • Promise.prototype.then()
  • Promise.prototype.catch()

為什麼要 FP? FP 帶來什麼好處

  • 可讀
    只需要理解 Function ,就可以透過一連串 Function 的組合來完成功能。

  • 可測(易除錯)
    Pure Function 讓我們可以預期程式的輸出和輸入,讓 Code 更容易被測試,進而精準定位問題。

  • 可重用
    每個 Function 都可以由更小的 Function 組合出來,進而減少程式碼的重複

參考資料

Functional Programming buzzwords
Think In FP
JavaScript 中函式就是一種物件 ─ 談談 first class function(一等公民函式)


上一篇
Semantic HTML
下一篇
git reflog 如何找回消失的 commit 記錄?
系列文
那些我還沒深入理解就開始使用的東西30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言