1. 程式人生 > 其它 >第三部分:理論一

第三部分:理論一

第三部分:理論一

  • 關於重構安排了六節課,主要包含一下幾個方面:
    • 對重構概括性的介紹,包括重構的目的(why)、物件(what)、時機(when)、方法(how)
    • 保證重構不出錯的手段,這裡我會重點講解單元測試和程式碼的可測試性
    • 不同規模的重構,重點講解大規模高層次重構(比如系統、模組、程式碼結構、類與類之間的互動等的重構)和小規模低層次重構(類、函式、變數等的重構)

重構的目的:為什麼要重構(why)?

重構的定義

  • 重構是一種對軟體內部結構的改善,目的是在不改變軟體的可見行為的情況下,使其更易理解,修改成本更低。

為什麼要進行程式碼重構?

  • 重構是時刻保證程式碼質量的一個極其有效的手段,不至於讓程式碼腐化到無可救藥的地步。
  • 優秀的程式碼或架構不是一開始就能完全設計好的,就像優秀的公司和產品也都是迭代出來的。
  • 重構是避免過度設計的有效手段。

重構對一個工程師本身技術的成長也有重要的意義

  • 重構實際上是對我們學習的經典設計思想、設計原則、設計模式、程式設計規範的一種應用。
  • 重構能力也是衡量一個工程師程式碼能力的有效手段。初級工程師在維護程式碼,高階工程師在設計程式碼,資深工程師在重構程式碼。

重構的物件:到底重構什麼(what)?

  • 大型重構指的是對頂層程式碼設計的重構:
    • 包括:系統、模組、程式碼結構、類與類之間的關係等的重構
    • 重構的手段有:分層、模組化、解耦、抽象可複用元件等等
    • 這類重構的工具就是我們學習過的那些設計思想、原則和模式
    • 程式碼改動多、影響面大、難度大、耗時長、風險大
  • 小型重構指的是對程式碼細節的重構:
    • 主要是針對類、函式、變數等程式碼級別的重構
    • 包含:規範命名、規範註釋、消除超大類或函式、提取重複程式碼等等
    • 小型重構更多的是利用我們能後面要講到的編碼規範
    • 改動集中、簡單可操作性強、耗時短、風險小

重構的時機:什麼時候重構(when)?

  • 平時不注重程式碼質量,堆砌爛程式碼,實在維護不了了就大刀闊斧地重構、甚至重寫的行為不可取
  • 重構策略應該是持續重構。
  • 重構能力很重要,持續重構意識更重要。時刻具有持續重構意識,才能避免開發初期就過度設計,避免程式碼維護過程中質量的下降。

重構的方法:又該如何重構(how)?

  • 在進行大型重構的時候,我們要提前做好完善的重構計劃,有條不紊地分階段來進行。每個階段完成一小部分程式碼的重構,要控制好重構影響到的程式碼範圍,考慮好如何相容老的程式碼邏輯。
  • 大規模高層次的重構一定是有組織、有計劃,並且非常謹慎的,需要有經驗、熟悉業務的資深同事來主導。
  • 小規模低層次的重構,因為影響範圍小,改動耗時短,所以,只要你願意並且有時間,隨時都可以去做。
  • 對於重構這件事情,資深的工程師、專案 leader 要負起責任來,沒事就重構一下程式碼,時刻保證程式碼質量處在一個良好的狀態。否則會產生“破窗效應”。