生命不息,重構不止

重構

在這裏插入圖片描述
所謂重構(refactoring)是這樣一個過程:
在不改變代碼外在行爲的前提下,對代碼做出修改,已改進程序的內部結構。使其程序的設計模式和架構更趨合理,提高軟件的擴展性和維護性。

在工作之中,和其他同行聊起幾年前以前共同開發的項目,聊到了現在發現的原有框架上的一些問題,並探討更好的解決方案。
在他的推薦下,我入了《重構 改善既有代碼的設計 第2版》一書。
好記性不如爛筆頭。
我在此記錄一下閱讀此書的筆記。

他們的看法

以下是行業內的人閱讀此書的一些看法摘抄:

  • 對於軟件工程師來說,重構,並不是額外的工作,它就是編碼本身。——喬樑,騰訊高級管理顧問

  • 應該去追求編寫人能讀懂的而不是僅機器能讀懂的代碼。——閻華,京東7FRESH架構師

  • 軟件不死,重構不歇。——餘晟,《代碼簡潔之道:程序員的職業素養》譯者

  • 持續優化已有代碼是維護系統生命力的最好方法。——楊衛華,微博研發副總經理

  • 深入地理解架構、理解業務、理解需求,減少因設計失誤而導致徒勞無益的反覆重構。——莊表偉,開源社區理事

重構心法

王建(譯者同事)的十六字重構心法:
舊的不變,
新的創建,
一步切換,
舊的再見。

重構第一示例

將一個業務複雜的單方法拆分成多個方法。
已達到主方法功能可讀易理解的效果。
有一點向爲一篇很長的文章整理段落,提煉標題;使比人能夠很容易的瞭解文章大體內容。

第一示例用到了以下重構方法:

  • 提煉函數(把一塊代碼單獨提取成一個函數)
  • 查詢取代臨時變量(函數參數:把能從現有參數中得到的變量取消掉)
  • 內聯變量(函數內部:取消臨時變量)
  • 改變函數聲明(修改函數名稱,使之能清晰的描述其作用)
  • 移動語句(函數內部:將變量聲明移動到緊鄰循環的位置)
  • 拆分循環(將同一函數下的多個邏輯單獨創建循環)

關於程序性能

先做重構,再做性能優化。
在此過程中犧牲了部分程序性能,但是對引用的影響微乎其微的。
對性能有較大影響時也不要慌,先重構是爲了後面的更好的調優。

重構的好習慣

  • 重構前,先準備一套可靠的測試集,這些測試必須有自我檢驗能力。
  • 小步伐修改程序,以便出錯時發現問題,不能急於求成。這一點對於已上線應用的系統尤爲重要。
  • 把代碼推送(push)到遠端倉庫前,把零碎的修改壓縮成一個更有意義的提交(commit).

編碼風格

變量改名

  • 永遠將函數的返回值命名爲“result”。

金額計算

  • 將貨幣以分爲單位存儲,可以避免使用浮點數又不影響數學操作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章