最近在客户那边一起 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 在重构上还是地表上最强的兵器啊。