系統重構(一系列等量變換)_技法1.抽取方法(Extract Method)_技法2.抽取類別(Extract Class)_技法3.抽取介面(Extract Interface)
最近開始接獲到一項需求 但是負責維護這部分相關程式的前人們 都不在 那映入眼簾的就是 一大堆function 而且每個 function 都是非常飽滿、好的大概50~60行多則900行 一個函數就這麼多行 = =||| 其餘大致上就是繼承關係看不出脈絡 或是主要的流程看不出端倪 有些類有這函數和變數 有些類沒有 有的路徑指定各有各自的路徑字串等等 真的是非常難閱讀且不易後續維護 也因此開始接觸了 人生中第一次所遇到的 系統程式重構的重責大任 注意重構等同於高空走鋼索 一旦改錯功能就會造成系統諸多異常 所以必須嚴謹再嚴謹(尤其是每次commit code 之前最好都再三留意) 何謂重構??? 重構 主要是 要求對太過於零亂的系統程式碼去進行 一個等量變化的修復過程好利於後欲維護與提高程式邏輯可閱讀性 在重構過後 甚至過程進行中的程式碼 皆不可影響外在功能 、 不可新增多於功能 也因此有人說它是一種程式碼的等量變換 必須以不改變程式外在行為作為前提 去改變程式內部結構以提升設計品質 (可閱讀性、未來維護性、Bug 修復、甚至效能耗時改善) 可以想成 寫數學計算式子 你可能會節省很多行計算過程(用橡皮擦 清除掉過去計算部分) 只保留最精簡的式子 為何要重構??? 現行系統運行就好好的 幹嘛還要搞個重構這麼麻煩費時 當你發現接獲需求要你從現有系統去擴充功能時 這時發現無法很方便增加新功能、修改邏輯 那就是該重構的時機了 重構的主要目標 A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior. 改成較容易理解與降低修改成本 以下我們來舉例 技法1.抽取方法(Extract Method) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33