PTT推薦

Re: [心得]以策略模式重構switch case或if (影片)

看板Soft_Job標題Re: [心得]以策略模式重構switch case或if (影片)作者
landlord
(91)
時間推噓 3 推:3 噓:0 →:0

因為有朋友想要 Python 的版本,
簡單的 legacy code 也可以讓他們玩玩 team build 練練手,
所以我就順手整理了 Python 的版本了。

- GitHub Repo & commit history: http://bit.ly/strategy-python-91
- 用 PyCharm 重構的影片,YouTube: https://youtu.be/IMV-lL_2jUw

好朋友 Julian 也試著用 go 玩了一下,有 func 跟 interface 兩種版本:
- func: http://bit.ly/strategy-go-by-func
- interface: http://bit.ly/strategy-go-by-interface



※ 引述《landlord (91)》之銘言:
: ※ 引述《landlord (91)》之銘言:
: : 最近在客戶那邊一起 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 在重構上還是地表上最強的兵器啊。
: 上回用 Java + IntelliJ 來重構一堆 if/else 的計算運費範例,
: 這次改用 C# + Rider 來重構一樣的例子,方便習慣 C# 的朋友參考與練習,
: 不過這次刻意改用 Func<T> 來當作 strategy 的實作內容,
: 以 function 來取代,省去 class + interface 的部份。
: 兩種作法適用場景不同,東西夠小夠單純,想要少一點 class/interface 等 elements,: 可以先這樣做,到真的有需要時,對熟悉重構的人來說,
: 要從 Func<T> 重構成 class + interface 只是一塊小蛋糕而已。
: ## Reference
: 1) C# + Rider Youtube 版影片:https://youtu.be/9rfVe6Uikt0
: 2) GitHub commit history: http://bit.ly/strategy-csharp
: 註:一般人的 Rider 沒有那個「把三元判斷式 自動替換成 Math.Min()」的燈泡,
: 那是我自己刻到 IDE 裡面的。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.141.15.100 (臺灣)
PTT 網址

leoone01/08 11:34推!

SweetDish01/08 22:57先推

WaterLengend01/13 08:55先推再看XD