About Cacher
Web App
Download
Sign In
Sign Up
menu
Cacher is the code snippet organizer for pro developers
We empower you and your team to get more done, faster
Learn More
shihyingru
4/9/2019 - 8:28 AM
share
Share
add_circle_outline
Save
Refactoring Code
Reference Book:M.Fowler et al - Refactoring - Improving the Design of Existing (重構-改善既有程式的設計)
重構手法 -- Extract Method
重構
-- Extract Method
content_copy
file_download
Rendered
Source
重構手法 -- Extract Method
函式的長度並不一定是重點,關鍵在於函式名稱和函式本體之間的語意距離。如果提煉(Extracting)動作可以強化程式碼的清晰度,便是可行的作法。函式名稱比提煉的程式碼還長也沒關係。
創造一個新函式,根據函式的意圖予以命名(以"作什麼"來命名)
將提煉出的code從源函式copy到新建的目標函式中
檢查提煉出的code,查看其中是否引用了作用域(scope)限於原函式的變數(包括區域變數和源函式變數) (是否有變數只能在當頁或是原本的函式中才能使用)
檢查是否有僅用於被提煉code的暫時變數(Temporary variables),如果有便在目標函式中將他們宣告為暫時變數。
檢查被提煉碼的是否有區域變數(local-scope variables)被該函式改變,如果有,試著將被提煉碼處理為一個查詢(query),並將結果賦值給相關變數。如果很難這樣作,可能需要先使用Split Temporary Variable或是Replace Temp eith Query。
將被提煉碼中需要讀取的區域變數,當作參數傳給目標函式(targetFunc(parameter))。
處理完所有區域變數之後,進行編譯。
在源函式中,將被提煉碼替換為對targetFunc()的呼叫。
編譯,測試。
untitled
content_copy
file_download
Rendered
Source
重構
為何重構?
改進軟體設計
設計不良的程式往往需要更多程式碼,通常是因為程式碼在不同的地方使用完全相同的句子作同樣的事。
因此改進設計的其一重要方向就是消除重複程式碼(Duplicate Code)。
雖然程式碼數量減少並不會使系統執行得更快,但程式碼數量減少會讓未來的程式修改動作容易得多。
重構使軟體更易被理解
可理解性是為了讓人類更容易理解程式碼,機器執行更久一點其實無仿,但花一些時間重構,讓程式碼更好的表達自己的用途, 這種編程模式的核心就是準確說出你的意思。
Ralph Johnson將這種早期重構描述為"擦掉窗戶上的汙垢,使你看得更遠",重構讓程式碼漸趨簡潔,
就能讓自己看到一些以前看不到的設計層面的東西。
重構幫助你找到臭蟲(bug)
重構幫助你加快編程速度
重構幫助你更快速的開發程式。
良好設計是維持軟體開發速度的根本。因為重構可以阻止系統腐敗變質,甚至還可以提高設計品質。
何時重構?
三次法則
1.添加功能時一併重構
2.修補錯誤時一併重構
3.復審程式碼時一併重構
clear