iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 14
0
自我挑戰組

30 天 node.js 學習筆記系列 第 14

Day14 Pure Function

在外插一篇

遇到甚麼問題?


當 code 越寫越多管理上就是一個問題,例如今天有個 TodoList 程式,你寫了一個渲染列表的 Function ,裡面分別 call 兩個 function :

  1. Sort
  2. 操作 Dom

假設今天要加上 filter 的 function,於是很自然就想拿原本的 array 的格式去做操作,結果卻報錯了,告訴你 Array 資料結構有誤,結果一看是 sort function 內不只做了 sort 還將資料結構改變,這在你寫的當下完全不得而知發生什麼事,況且今天是前面只有一隻 function ,假設有 10 幾隻 function,這樣追下去很浪費時間,這也就是 Pure function 概念其中之一,不希望你去改外部的狀態,因為會非常難追蹤錯誤。

又或是今天你 call 一個 function 希望計算目前活動參加人數結果,但有人在裡面 call fetch 而你不知道,你就直接拿著 return result 去 run,結果就發現怎麼樣就是 undefined,且 code 永遠最後才執行,Pure function 也不希望你在 function 內執行 side effect。

又或是你 call 一個 function 是想 click 一次就將 count + 1,結果你預期,0 傳進去他回傳 1,但結果有時是 1 有時是 { count: 1 ,等完全無法預測的結果。

所以 pure function 希望

  • 不要依賴外面狀態
  • 傳入固定 input 會固定 output,方便測試以及好預測結果
  • 不能有 side effect
  • 一次只做一件事,保持程式可預測以及單純化,提高可讀性

上一篇
Day13 HTTP1.1 VS HTTP2.0 差異以及對效能的影響
下一篇
Day 15 call by value, call by share
系列文
30 天 node.js 學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言