1. 程式人生 > 其它 >基於《重構》的程式碼重生之路

基於《重構》的程式碼重生之路

我們為什麼要重構

  你一定經歷過,工作中,歷史專案裡面,一個函式幾百行,變數命名不清晰,每每出現bug,用於修復bug的時間往往在看懂原開發者的意圖之上。總之為了早點下班,為了更美好的生活。我們有必要寫出清晰,優雅的程式碼,讓我們自己開心,也讓以後的開發者不在心中暗罵我們。

編寫思路

  本文主要以《重構》第二版為參照,基於現實開發中的實際問題進行解析,並加入部分實際開發程式碼(虛擬碼)進行描述,希望讀者看完這篇文章,能夠有所收穫。

1. 提煉函式(Extract Function)

  提煉函式,顧名思義就是將我們的程式碼塊以函式的形式進行存放,這種方式最大好處就是避免過長的程式碼,同時良好的函式命名也可以讓讀者知道這部分程式碼的用意。那麼我們如何判斷是否需要提煉函式呢,《重構》作者提出的觀點是,如果你需要花時間瀏覽一段程式碼才能弄清它到底在幹什麼

,那麼就應該將其提煉到一個函式中,並根據它要做的事情為其命名。(往往花了很多時間還是不能很好的理解程式碼的意圖,那就是程式碼的壞味道),下面是實際的做法:

  1.   創造一個函式,根據函式的用途對其命名。
  2.       將待提煉的程式碼複製到新建的目標函式中。
  3.   仔細檢查提煉程式碼,是否錯在變數作用域問題,或者值的修改的問題,防止作用域汙染。
  4.   處理有問題的變數,自測, 完成提煉。

  舉個例子:

  1. 聚合邏輯相關程式碼,進行整合,防止同一邏輯程式碼相距過遠。

function test () {
  let a = 1;
  console.log('111111')      
  console.log(a);
}

// 實際呼叫a的時候在1111下面,雖然不影響程式碼執行,但是推薦如下操作 function test () { console.log('111111') let a = 1; console.log(a); }

// 聚攏程式碼之後,就可以將邏輯相近的程式碼提煉出來

function consoleA () {
  let a = 1;
  console.log(a);
}

  

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