如何寫出優美的代碼(一)


(本文思想基本來自於經典著作《重構》一書)

 

我願意把代碼想象成女性,我希望在我面前的是一個美女,受不了丑陋的那部分。

優美的代碼可理解性高,修改成本低。不過優美的代碼是不容易一次寫出的。我的代碼剛剛寫完就是一坨屎。

比如有很多重復代碼,同一個類的兩個函數含有相同的表達式。

函數過長,以至於需要注釋來解釋區分。函數的參數超過3個。這些參數總是在一起出現,卻沒有為它們產生一個新的對象。

當有不同原因的改動時,有的類需要在不同方向上變化;當出於一個原因改動時,卻有不同的小類需要做出小修改

某些類中的函數擁有很多其它類中的數據

……

不能忍了!還好,我院引進了先進的“整容技術”。讓我們一起來見識一下:

 

一、重新組織函數

 

1、提煉函數

這里有幾個要點:

a)創建一個函數,根據它“做什么”命名;

b)我比較喜歡讓每個函數都只返回一個值,返回的臨時變量在函數里命名一致,return result;

2、以查詢取代臨時變量

這樣同一個類中的所有函數都可以獲得這份信息:

a)找出只被賦值一次的臨時變量,聲明為final,編譯測試,通過將其提煉為獨立函數;

3、引入解釋性變量

用於當局部變量時提煉函數難以進行時,尤其適用於條件邏輯。

4、分解臨時變量

不要讓臨時變量承擔一個以上的責任,每次復制,創造獨立的臨時變量,聲明為final。

5、在java中,不要對參數賦值,建立一個臨時變量,把待處理的參數賦予它:

java參數都是按值傳遞,給參數重新賦值,不會改變被傳遞對象的狀態。可以修改函數對象,但重新賦值沒有意義。

6、以函數對象取代函數

建立一個新類,在其中建立一個final字段,用以保存源對象,同時建立對應原臨時變量的字段;

建立構造函數,接受源對象及原函數的所有參數作為參數;

這樣由於所有局部變量現在都成了字段,所以可以任意分解這個大函數,不必傳遞任何參數。

7、替換算法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM