作為一個程序員,大部分時候,如果不是一個人承包整個項目,那么有1/3的時間在寫代碼,1/3的時間在看別人寫的代碼,剩下的1/3的時間在摸魚。
那么如何提高摸魚的時間?看別人寫代碼十分頭疼,分分鐘想罵人,自己卻又寫得龍飛鳳舞,接下來,來看看如何進行代碼重構,來提升一下自己的大神氣質。
- 提煉函數
程序猿大部分時間都在與函數打交道,我們都希望看到前前前同事寫的函數代碼具有這樣特點:
- 良好的命名:比如用戶登錄,寫成ada(){}如果不寫注釋,還需要去看代碼到底封裝了神馬東西,是不是想罵gou?寫成userLogin(){}是不是一目了然?連注釋都不用寫了,還可以練習英語。
- 函數長度適中,功能獨立:如果一個函數過長,不得不加上若干的注釋說明,才能夠讓這個函數顯得易讀一些,都這樣了還想邏輯清晰明了嗎?我們應該避免出現超大函數,如果代碼中有一段代碼可以獨立出來,那么最好把這個代碼放進另外一個獨立的函數中,這樣做的優點:
1)有助于代碼復用
2)獨立出來的函數更容易被覆寫,一個項目開發完了,可能會重復迭代,次數多了,自己都看不懂自己寫的代碼。
- 合并重復的條件片段
如果處理鏈接上的頁數跳轉,當頁數大于或者小于總頁數的時候去首頁,其他正常跳轉:
if(currPage <=0 || currPage >totalPages){
currPage = 0;
jump(currPage);// 跳轉
}else {
jump(currPage);// 跳轉
}
可以把公共的部分獨立出來:
if(currPage <=0 || currPage >totalPages){
currPage = 0;
}
jump(currPage);// 跳轉
- 把條件分支語句提煉成函數
- 合理使用循環
- 提前讓函數退出代替嵌套條件分支
如果代碼不滿足當前設定的條件,那么對下面的代碼不再感興趣,那應該在不感興趣的時候就提供出口,而不需要再繼續執行下面大量的、對預期結果無用的代碼。
- 傳遞對象參數代替過長的參數列表
有時候一個函數可以接收多個參數,而參數的數量越多,函數越難理解和使用,這時候可以把參數放入一個對象內,然后把參數傳入對象中使用。這樣就不必關心參數的數量和順序了,只要保證key不變就可以了。
- 盡量減少參數數量
我們需要搞清楚設置為參數的變量的具體意義,當一個函數不需要參數就能夠使用的時候,是深受開發者喜愛的。
- 少用三目運算符
如果條件太多,目運算符就會變得沉重,這樣修改起來也是很吃力的。
- 合理使用鏈式調用
- 適當地寫注釋
要寫有什么用,而不是復述代碼
如下,這樣的注釋是不是還不如不寫:
/*
* 定義了一個變量,當show等于1的時候,fresultData等于show的時候,值為pagesList_1,否則為:pagesList_2
*/
let resultData = show==1?:pagesList_1:pagesList_2 ;
對比:
let resultData = show==1?:pagesList_1:pagesList_2 ;// 1: A類訂單結果,其他值:B類訂單結果
- 用return退出多重循環
比如使用雙重循環,內部循環達到某個臨界值的時候跳出循環,這時候使用return比使用break可讀性更高。