2.3 砍功能實例 1

上圖是 Viper 中 Console 類別的定義,我們所使用的編輯器是 Vim 加上 Exuberant-ctag 和 tagbar 的套件,所以在檢閱程式碼時就能很快地看出它的結構,例如該程式 import 了哪些模組,定義了哪些 Class 以及 Function,利用這種瀏覽目錄的方式我們能更有效的刪除多餘的程式碼。

你可能會問,這樣的話根本看不出 Function 內的程式碼,如何判斷要刪掉哪部分?其實不需要,我們只要透過 Function 的名子去猜測它的功能後在經過測試,就能找出多餘的那部分。 以上圖的例子來說明,在 Console 中有以下幾個 Function,包括:keywords、parse、start、complete、save_history、stop。透過它們命名我們可以推測

  • keywords:關鍵字相關的功能

  • parse:分析字串

  • start:開始

  • complete:完成時的動作

  • save_history:儲存歷史紀錄

  • stop:停止

有了這些 Function 的功能假設後,我們要挑選出“功能正常運作時必須執行的程式碼”,也就是該功能不可或缺核心,舉例來說,如果 Console 要正常運行,在以上的 Function 中必須有開始和停止這兩部分,而其他諸如關鍵字和歷史紀錄等等,則是較額外的功能,這時候我們假設 start 和 stop 就是該程式的核心,這樣一來其餘的 Function 就能視為是可刪除的。但這畢竟是假設,必須經過驗證測試才能確保刪除後不會影響正常功能的運作,而測試方法非常簡單,只需要將 Function 刪除後執行一次,就能馬上知道結果;如果主要功能正常能夠運行,那這一次的過濾就算是成功了。

Last updated

Was this helpful?