簡約的軟體開發思維 4~5
前端讀書會/上德/2025-10-3
B L U E P L A N E T
章節
4. 擷取 Actions 函式中的 Calculations
5. 改良 Actions 的設計
2
B L U E P L A N E T
復習 1
3
B L U E P L A N E T
復習 2
4
B L U E P L A N E T
Chapter 4. 擷取 Actions 函式中的 Calculations
5
B L U E P L A N E T
範例 – 網路商城
6
B L U E P L A N E T
範例程式碼
每一個函式分別是 Actions, Calculations, Data?
7
?
?
?
?
?
?
B L U E P L A N E T
範例程式碼
每一個函式分別是 Actions, Calculations, Data?
→ 每一個都是 A
8
B L U E P L A N E T
可測試性
9
B L U E P L A N E T
可重覆性
10
B L U E P L A N E T
函式的輸入、輸出
* 在 FP 的語言裡,隱性輸入與輸出即是 side effects,他們有別於函式的主要作用 (effects) - 計算傳回值
11
B L U E P L A N E T
移除隱性輸入和輸出
12
B L U E P L A N E T
從 Action 中擷取出 Calculation
13
B L U E P L A N E T
擷取子程序
將運算的程式獨立出來
14
B L U E P L A N E T
去除隱性輸出
輸出換成傳回值
15
B L U E P L A N E T
去除隱性輸入
所有輸入換成引數
16
B L U E P L A N E T
copy-on-write
17
B L U E P L A N E T
Chapter 5. 改良 Actions 的設計
18
B L U E P L A N E T
設計原則1:最小化隱性輸入與輸出
19
B L U E P L A N E T
減少隱性輸入/輸出
20
B L U E P L A N E T
根據用途選擇合適的抽象化層級
* 更改函式簽章(引數)並非重構,因為函式行為會改變
21
B L U E P L A N E T
設計原則2:「拆解」是設計的本質
拆解成小函式的好處:
22
B L U E P L A N E T
替 Calculations 分類
23
B L U E P L A N E T
依分類拆解
依「購物車陣列」和「商品物件」拆解:
(名稱普適化)
24
B L U E P L A N E T
程式重構後
25
B L U E P L A N E T
小結
26
B L U E P L A N E T
Recap
27
B L U E P L A N E T
我的心得
28
B L U E P L A N E T
Thanks
29
B L U E P L A N E T