開發與維運

一個簡單的代碼風格優化的小案例

一、背景

最近 review 了一些代碼,其中有一個函數的寫法看著彆扭,而且對應同學不太清楚還可以怎麼優化。由於案例比較典型,值得分享一下。

本文給出對應的偽代碼和自己的修改建議,並推薦可以提交代碼質量的圖書,以便能夠幫助大家養成良好的編碼風格。

二、偽代碼

public void doSomething(){
// 構造參數(後無空格)
// 調用二方服務(後無空格)
if(result.success && result.getXXXMap() != null  && result.getXXXMap().get("aaa") != null){
// 執行一大段邏輯
}
}

存在的問題

- 代碼行數有點多

- 構造參數、調用二方服務、結構判斷並執行大段邏輯之前沒有任何空行,導致看著不夠清晰

- if 判斷部分搞得有些複雜,需要多看幾眼才能看懂

三、修改

修改意見

- 每個步驟中間加個空格,提升段落感

- 將成功後的處理提取成一個獨立的函數,降低函數長度

- 將判斷所需的map 提取成局部變量,讓判斷更加簡潔

- 將防禦性判斷寫在代碼執行之前,邏輯更清晰

public void doSomething(xxx){
// 構造參數(後空格一行)
// 調用二方服務(後空格一行)
    if(result.success ){
      other();
    }
}
// other 只是一個demo, 實操時命名符合意圖
private void other(yyy){
Map<K,V> map = result.getXXXMap() ;
if( null == map &&  null == map.get("aaa")){
  return;
}
// 執行業務邏輯
}

當然,如果有必要 前面的 result.success 也可以反向判斷直接  return 。

這裡的 “aaa” 只是一個舉例,實際並不是簡單的字符串,所以暫時不處理。

如果是普通字符串的話,建議定義為常量。

這樣修改完畢可讀性就提高了很多,代碼非常清晰。

四、總結

這個案例非常簡單,希望能夠幫助大家養成良好的代碼風格,提高代碼可讀性,讓讀者看起來更清爽。

另外《代碼精進之路 從碼農到工匠》中有提到【寫代碼是兩次創作】

優雅的代碼很少是一次形成的,大部分情況下要經過兩次創造:第一遍實現功能,第二遍重構優化。

因此,實現功能以後,在代碼審查階段,如果有時間建議儘量對代碼進行優化。

另外推薦閱讀《阿里巴巴Java 開發手冊》、《重構 -改善既有代碼的邏輯》、《代碼整潔之道》,代碼質量應該可以上升到一個新的臺階。

Leave a Reply

Your email address will not be published. Required fields are marked *