《重構:改善既有代碼的設計》讀書筆記(一)

軟件 軟件設計 科技 互聯網微筆記 2017-05-17

《重構:改善既有代碼的設計》讀書筆記(一)

最近和一位朋友聊到軟件開發中的代碼重構這個話題,諸如重構原則包括時機的考慮、間接層擴展、投入產出平衡點等問題。於是本人將以前買的《重構:改善既有代碼的設計》這本書又拿起來讀了一遍,並對部分章節做了讀書筆記。

對於這本書,可能很多人已經閱讀過,總體上還是挺經典的。這裡結合自己的理解,我把其中比較重要的地方做了一些提煉,主要分析梳理重構原則相關內容。

1. 重構的定義

重構是對軟件內部結構的一種調整,主要是在不改變軟件可觀察行為的前提下,調整其結構,以提高軟件代碼的可理解性,並降低修改成本。

這裡要注意代碼重構中的兩頂帽子:一是添加新功能時,不要修改已有代碼;二是在重構時,只管改進程序結構,不去添加新功能。

簡單來說,就是將添加新功能與代碼重構這兩項工作分開處理、不混在一起。因為重構的基本前提就是不影響軟件的功能特性,而且分開處理,也可以降低重構難度。

2. 重構的時機

我們對軟件代碼進行重構,可能是為了改進軟件設計,也可能是試圖讓代碼更容易理解,或是為了幫助發現潛在bug,那麼,什麼時候應該考慮重構?也即重構時機問題。

作者Martin Fowler認為,應該考慮重構的時機,有三個:添加功能時、修補錯誤時、複審代碼時。

在添加新功能時,是否需要重構,還有一個輔助的參考判斷,就是改用其他設計方式,是否可以簡化我們的工作,或者說,重構之後是否可以更快、更方便地添加新功能。

與之對應地,不應該重構的時機,又分別包括:現有代碼根本不能正常運行時、項目進度不允許時。

因為代碼重構工作一般都需要足夠的時間,這裡就需要我們結合當前項目狀態和軟件版本計劃綜合評估。例如在項目後期,產品即將發貨時,軟件版本的穩定性和發貨時間更為重要。這時候就不太適合啟動代碼重構了。

3. 間接層

除了重構時機之外,還有一個問題也是需要關注的,就是間接層的增加與刪除。

間接層也可以叫中間層或者適配層,主要是用來減少耦合、隔離變化、複用邏輯,這裡還是根據使用場景,評估投入產出,預期收益大於重構的付出時,考慮引入中間層。

例如,移動終端上,我們需要讓一套應用代碼運行在多個平臺,減少代碼維護工作量。典型的場景是:不同芯片廠家或者不同的芯片系列往往分別對應一個平臺。這時候可以在各個平臺框架層與應用層之間增加一個間接層,來適配不同平臺框架接口的差異對應用層代碼的影響。

這個間接層可以考慮放在應用層裡面,也可以放在平臺框架層擴展,更多的時候,在應用層和平臺框架層都需要擴展修改,還看這個應用所依賴的框架層接口,在不同平臺間的差異有哪些。

關於代碼重構,暫時先到這裡,後面繼續探討。

--------------

歡迎關注公眾號互聯網微筆記(iweibiji),可獲取更多分享並進群交流。

相關推薦

推薦中...