程式碼的鍊金術-重構Plus
此為歷史活動,如您對本活動有興趣,您可以從以下管道得到我們最新活動資訊:
活動規劃
- 辨識重構點
- 重構三大兵器
- Extract Method
- Extract Class
- Extract Interface
- 聚合與解離
- 辨識難以理解的程式碼 - Inline things
- Configuration Class 的設計
- 把非 DI 的 App 重構成 DI 版本
講者的話
關於重構-refactoring
這是一門很奇妙的課題,簡單的重構可能是把魔法數字變成常數、組態物件 - Replace Magic Number with Symbolic Constant 或是把某段抽成函式 - Replace Temp with Query(Extract method,因應情境不同) 複雜的可能是從某個類別抽出介面/抽象類別 - Extract interface / Extract abstract class 從某個類別抽出一群函式重組成另一個類別(解構大類別) Replace Methods with Method Object 拆解 if-else 波動拳成為更容易閱讀的模樣 - Replace Temp with Query/Dispatcher 重構的教條式多不勝舉,但通常圍繞著一個準則,Extract and Recombine(抽離與重組)但面對一個大類別,要做到抽離再重組依賴著工具及經驗,例如開始一塊塊的 Extract method,最後再重組成 Sub class,接著 Extract interface.....
一連串的動作充滿著陷阱及風險,雖然大家都知道可以用測試來避開,但面對一個沒有測試的大類別,要有測試前得先改(重構),這就像是雞生蛋、蛋生雞一樣的矛盾。
作為重構系列的第一堂課,我將其定義為入門等級,會講到一些教條及及如何解構、加測試,引領各位踏入第一道門,重構是一種習慣,不是一個階段,在整個軟體生命週期中,我們會不停的重構,目的就是為了延長軟體的生命週期。
軟體是如何腐化而死的?
很簡單,因為沒時間重構,一直加進新功能,改變舊有行為,最後進入一個把舊有程式註解掉寫新的,更甚之,由於不敢改,乾脆在舊有程式下寫新的程式的詭異狀態,當這些情況發生時,軟體基本上已經到達遲暮之時,重構的習慣就是延緩這個時機的到來。
是的,你沒看錯,是延緩,不是完全避免,存活超過 20 年以上的軟體很稀少,這來自很多因素,外在環境的改變,內在人員的輪動,但沒有重構的習慣一定佔很大百分比,說是加速 50% 也不為過。
喔,我沒有忘記 chatgpt,這堂課裡面你也會看到如何使用 chatgpt 來協助重構,這是一個嶄新的年代,我們要習慣 ![]()
注意事項
- 本活動使用 C# 為主要語言