重构手法之简化函数调用【1】
返回總目錄
本小節目錄
- Rename Method(函數改名)
- Add Parameter(添加參數)
- Remove Parameter(移除參數)
1Rename Method(函數改名)
概要
函數的名稱未能揭示函數的用途。
修改函數的名稱。
動機
將復雜的處理過程分解成小函數是良好的編程風格。但是,如果做的不好,會使你費盡周折卻弄不清楚這些小函數各自的用途。要避免這些麻煩,關鍵在于給函數起一個好名稱。函數的名稱應該準確表達它的用途。給函數命名有一個好辦法:首先考慮給這個函數寫上一句怎樣的注釋,然后想辦法將注釋變成函數名稱。
如果你看到一個函數名稱不能很好的表達它的用途,應該馬上加以修改。
范例
如下代碼所示,假如一個公司建立一個員工的類,類中有一個員工名字的字段和一個按照小時計算員工收入的方法,那么下面代碼的取名就顯得很難理解了,所以我們會重構名稱。
public class Person {public string FN { get; set; }public decimal ClcHrlyPR(){// code to calculate hourly payratereturn 0m;} }重構后代碼如下所示,這樣看起來就非常清晰,如果有新進項目組的成員,也會變得很樂意看這個代碼。
public class Employee {public string FirstName { get; set; }public decimal CalculateHourlyPay(){// code to calculate hourly payratereturn 0m;} }?小結
此重構經常被廣大程序員所忽視,但是帶來的隱患是不可估量的,也許老板要修改功能,那我們來看這段沒有重構的代碼(就算是自己寫的,但由于時間和項目多等關系,我們也很難理解了),然后就會變得焦頭爛額。相反重構后的代碼就會覺得一目了然、賞心悅目。
當然了,本文中的改名不僅僅是函數,還包括類、方法參數、變量、委托、事件等等元素。
2Add Parameter(添加參數)?
概要
某個函數需要從調用端得到更多的信息,那么為此函數添加一個參數,讓該參數帶進函數所需信息。動機
這個重構手法很常用,我相信你肯定用過它。
你必須修改一個函數,而修改后的函數需要一些過去沒有的信息,因此需要給該函數添加一個參數。
那么,什么時候不使用本項重構?
除了Add Parameter外,只要有可能,其他選擇都比“Add Parameter”要好,因為有可能其他選擇不會增加參數列的長度。過長的參數列是不好的味道,因為程序員很難記住那么多參數,而且往往伴隨著壞味道Data Clumps。
3Remove Parameter(移除參數)
概要
函數本體不再需要某個參數,將該參數去除。
動機
程序員可能經常添加參數,卻往往不愿意去掉它們。他們想:無論如何,多余的參數不會引起任何問題,而且以后還可能用上它。
這種想法很糟糕!參數代表著函數所需的信息,不同參數代表不同意義。函數調用者必須為每一個參數操心該傳什么東西進去。如果不去掉多余參數,就是讓你的每一位用戶多費一份心。
?
To Be Continued……
轉載于:https://www.cnblogs.com/liuyoung/p/7899768.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的重构手法之简化函数调用【1】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ1202 [HNOI2005]狡
- 下一篇: Bootstrp--一个导航面板切换的实