第三部分:理論一
阿新 • • 發佈:2021-10-04
第三部分:理論一
- 關於重構安排了六節課,主要包含一下幾個方面:
- 對重構概括性的介紹,包括重構的目的(why)、物件(what)、時機(when)、方法(how)
- 保證重構不出錯的手段,這裡我會重點講解單元測試和程式碼的可測試性
- 不同規模的重構,重點講解大規模高層次重構(比如系統、模組、程式碼結構、類與類之間的互動等的重構)和小規模低層次重構(類、函式、變數等的重構)
重構的目的:為什麼要重構(why)?
重構的定義
- 重構是一種對軟體內部結構的改善,目的是在不改變軟體的可見行為的情況下,使其更易理解,修改成本更低。
為什麼要進行程式碼重構?
- 重構是時刻保證程式碼質量的一個極其有效的手段,不至於讓程式碼腐化到無可救藥的地步。
- 優秀的程式碼或架構不是一開始就能完全設計好的,就像優秀的公司和產品也都是迭代出來的。
- 重構是避免過度設計的有效手段。
重構對一個工程師本身技術的成長也有重要的意義
- 重構實際上是對我們學習的經典設計思想、設計原則、設計模式、程式設計規範的一種應用。
- 重構能力也是衡量一個工程師程式碼能力的有效手段。初級工程師在維護程式碼,高階工程師在設計程式碼,資深工程師在重構程式碼。
重構的物件:到底重構什麼(what)?
- 大型重構指的是對頂層程式碼設計的重構:
- 包括:系統、模組、程式碼結構、類與類之間的關係等的重構
- 重構的手段有:分層、模組化、解耦、抽象可複用元件等等
- 這類重構的工具就是我們學習過的那些設計思想、原則和模式
- 程式碼改動多、影響面大、難度大、耗時長、風險大
- 小型重構指的是對程式碼細節的重構:
- 主要是針對類、函式、變數等程式碼級別的重構
- 包含:規範命名、規範註釋、消除超大類或函式、提取重複程式碼等等
- 小型重構更多的是利用我們能後面要講到的編碼規範
- 改動集中、簡單可操作性強、耗時短、風險小
重構的時機:什麼時候重構(when)?
- 平時不注重程式碼質量,堆砌爛程式碼,實在維護不了了就大刀闊斧地重構、甚至重寫的行為不可取
- 重構策略應該是持續重構。
- 重構能力很重要,持續重構意識更重要。時刻具有持續重構意識,才能避免開發初期就過度設計,避免程式碼維護過程中質量的下降。
重構的方法:又該如何重構(how)?
- 在進行大型重構的時候,我們要提前做好完善的重構計劃,有條不紊地分階段來進行。每個階段完成一小部分程式碼的重構,要控制好重構影響到的程式碼範圍,考慮好如何相容老的程式碼邏輯。
- 大規模高層次的重構一定是有組織、有計劃,並且非常謹慎的,需要有經驗、熟悉業務的資深同事來主導。
- 小規模低層次的重構,因為影響範圍小,改動耗時短,所以,只要你願意並且有時間,隨時都可以去做。
- 對於重構這件事情,資深的工程師、專案 leader 要負起責任來,沒事就重構一下程式碼,時刻保證程式碼質量處在一個良好的狀態。否則會產生“破窗效應”。