[心得]以策略模式重構switch case或if (影片)
最近在客戶那邊一起 pair 重構 legacy code,
碰到了一大段 if/else statement,用來判斷什麼時候該使用哪一種cache,
並依照不同 cache 的邏輯來決定回傳的內容。
發現還是有蠻多風氣比較封閉的公司對這類型的基本功跟處理不是很熟悉,
可能是對 code smell 不熟,對重構不熟,對 design pattern 不熟,對工具不熟。
因此,我用自己幾年前的一個「計算運費」的範例,設計成這類型程式碼重構的簡介。
這個範例之前是 C#,這次示範我改用 Java,用 IntelliJ 來重構。
有整個重構過程的 IDE 操作影片,也有每一個重構 baby steps 的 commit history。
影片:https://youtu.be/zO-NnNC-xyg
GitHub commit history: https://bit.ly/strategy-91
也可以參考 《Refactoring to Patterns》 的
Replace Conditional Logic with Strategy:
https://www.informit.com/articles/article.aspx?p=1398607&seqNum=2
IntelliJ/Android Studio 在重構上還是地表上最強的兵器啊。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.25.31.202 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1607866053.A.4BB.html
推
12/13 22:18,
3年前
, 1F
12/13 22:18, 1F
推
12/13 23:01,
3年前
, 2F
12/13 23:01, 2F
推
12/13 23:06,
3年前
, 3F
12/13 23:06, 3F
推
12/13 23:25,
3年前
, 4F
12/13 23:25, 4F
→
12/14 09:10,
3年前
, 5F
12/14 09:10, 5F
→
12/14 09:10,
3年前
, 6F
12/14 09:10, 6F
推
12/14 09:16,
3年前
, 7F
12/14 09:16, 7F
→
12/14 09:16,
3年前
, 8F
12/14 09:16, 8F
推
12/14 11:49,
3年前
, 9F
12/14 11:49, 9F
→
12/14 12:28,
3年前
, 10F
12/14 12:28, 10F
→
12/14 12:47,
3年前
, 11F
12/14 12:47, 11F
推
12/14 13:59,
3年前
, 12F
12/14 13:59, 12F
推
12/14 14:36,
3年前
, 13F
12/14 14:36, 13F
→
12/14 15:17,
3年前
, 14F
12/14 15:17, 14F
→
12/14 15:22,
3年前
, 15F
12/14 15:22, 15F
→
12/14 15:23,
3年前
, 16F
12/14 15:23, 16F
推
12/14 15:36,
3年前
, 17F
12/14 15:36, 17F
→
12/14 15:36,
3年前
, 18F
12/14 15:36, 18F
→
12/14 15:36,
3年前
, 19F
12/14 15:36, 19F
推
12/14 15:38,
3年前
, 20F
12/14 15:38, 20F
→
12/14 15:38,
3年前
, 21F
12/14 15:38, 21F
→
12/14 15:39,
3年前
, 22F
12/14 15:39, 22F
推
12/14 15:39,
3年前
, 23F
12/14 15:39, 23F
→
12/14 15:42,
3年前
, 24F
12/14 15:42, 24F
→
12/14 15:42,
3年前
, 25F
12/14 15:42, 25F
→
12/14 15:42,
3年前
, 26F
12/14 15:42, 26F
→
12/14 15:43,
3年前
, 27F
12/14 15:43, 27F
→
12/14 15:45,
3年前
, 28F
12/14 15:45, 28F
→
12/14 15:45,
3年前
, 29F
12/14 15:45, 29F
推
12/14 15:54,
3年前
, 30F
12/14 15:54, 30F
推
12/14 16:33,
3年前
, 31F
12/14 16:33, 31F
推
12/14 22:40,
3年前
, 32F
12/14 22:40, 32F
推
12/14 22:44,
3年前
, 33F
12/14 22:44, 33F
→
12/14 22:45,
3年前
, 34F
12/14 22:45, 34F
→
12/14 23:45,
3年前
, 35F
12/14 23:45, 35F
→
12/15 08:28,
3年前
, 36F
12/15 08:28, 36F
推
12/15 10:02,
3年前
, 37F
12/15 10:02, 37F
→
12/15 10:02,
3年前
, 38F
12/15 10:02, 38F
→
12/15 10:02,
3年前
, 39F
12/15 10:02, 39F
→
12/15 10:02,
3年前
, 40F
12/15 10:02, 40F
→
12/15 10:02,
3年前
, 41F
12/15 10:02, 41F
→
12/15 10:02,
3年前
, 42F
12/15 10:02, 42F
推
12/15 10:09,
3年前
, 43F
12/15 10:09, 43F
→
12/16 14:00,
3年前
, 44F
12/16 14:00, 44F
→
12/16 14:01,
3年前
, 45F
12/16 14:01, 45F
→
12/16 14:02,
3年前
, 46F
12/16 14:02, 46F
→
12/16 14:03,
3年前
, 47F
12/16 14:03, 47F
→
12/16 21:11,
3年前
, 48F
12/16 21:11, 48F
→
12/16 22:24,
3年前
, 49F
12/16 22:24, 49F
→
12/16 22:25,
3年前
, 50F
12/16 22:25, 50F
→
12/16 22:25,
3年前
, 51F
12/16 22:25, 51F
→
12/16 22:26,
3年前
, 52F
12/16 22:26, 52F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 6 篇):
Soft_Job 近期熱門文章
37
144
PTT職涯區 即時熱門文章
34
113