列表不是按任何特定順序排列的,而是從所有代碼質量工具(如CheckStyle , FindBugs和PMD)強制執行的規則中得出的。
開始了!
在Eclipse中格式化源代碼并組織導入:
Eclipse提供了自動格式化源代碼和組織導入(從而刪除未使用的導入)的選項。 您可以使用以下快捷鍵來調用這些功能。
- Ctrl + Shift + F –格式化源代碼。
- Ctrl + Shift + O –組織導入并刪除未使用的導入。
您可以告訴Eclipse在保存文件時自動格式化和自動組織,而不必手動調用這兩個函數。 為此,在Eclipse中,轉到窗口->首選項-> Java->編輯器->保存操作 ,然后啟用在保存時執行選定的操作,并選中格式化源代碼 + 組織導入 。 避免方法中的多次返回(退出點):
在您的方法中,請確保只有一個出口點 。 在方法主體中不要在多個地方使用return。
例如,下面的代碼是不推薦的,因為它有一個以上的退出點(返回語句)。
private boolean isEligible(int age){if(age > 18){return true;}else{return false;}
}
上面的代碼可以這樣重寫(當然,下面的代碼仍然可以改進,但是稍后會介紹)。
private boolean isEligible(int age){boolean result;if(age > 18){result = true;}else{result = false;}return result;
}
簡化if-else方法:
我們編寫了幾種實用程序方法,這些方法采用一個參數,檢查某些條件并根據條件返回一個值。 例如,考慮您在上一點中剛剛看到的isEligible方法。
private boolean isEligible(int age){boolean result;if(age > 18){result = true;}else{result = false;}return result;
}
整個方法可以重寫為單個return語句,如下所示。
private boolean isEligible(int age){return age > 18;
}
不要創建布爾,整數或字符串的新實例:
避免創建Boolean,Integer,String等新實例。例如,不要使用new Boolean(true)
,而應使用Boolean.valueOf(true)
。 后面的語句具有與前一個語句相同的效果,但是它提高了性能。
在塊語句周圍使用花括號。
不要忘記在塊級語句周圍使用花括號,例如if , for , while 。 這樣可以減少代碼的歧義,并避免在修改塊級語句時引入新錯誤的機會。
不建議
if(age > 18)result = true;
elseresult = false;
推薦的
if(age > 18){result = true;
}else{result = false;
}
在適用的情況下,將方法參數標記為最終參數:
在適用的情況下,始終將方法參數標記為最終參數。 如果這樣做,不小心修改了參數的值,則會收到編譯器警告。 而且,它使編譯器可以更好地優化字節碼。
推薦的
private boolean isEligible(final int age){ ... }
在大寫字母中命名公共靜態最終字段:
始終在大寫中命名公共靜態最終字段(也稱為常量 )。 這使您可以輕松地區分常量字段和局部變量。
不建議
public static final String testAccountNo = '12345678';
推薦的
public static final String TEST_ACCOUNT_NO = '12345678';
,
將多個if語句合并為一個:
盡可能將多個if語句合并為一個。
例如下面的代碼;
if(age > 18){if( voted == false){// eligible to vote.}
}
可以組合為單個if語句,例如:
if(age > 18 && !voted){// eligible to vote
}
開關應該具有默認值 :
始終為switch語句添加默認大小寫。
避免重復的字符串文字,而是創建一個常量:
如果必須在多個地方使用字符串,請避免將其用作文字。 而是創建一個String常量并使用它。
例如,從下面的代碼中,
private void someMethod(){logger.log('My Application' + e);........logger.log('My Application' + f);
}
字符串文字“我的應用程序”可以制成常量,并在代碼中使用。
public static final String MY_APP = 'My Application';private void someMethod(){logger.log(MY_APP + e);........logger.log(MY_APP + f);
}
其他資源:
- Java最佳實踐的集合。
- 可用Checkstyle檢查的列表。
- PMD規則集列表
參考:我們的JCG合作伙伴 Veera Sundar博客上的Java常見Java代碼違規 。
翻譯自: https://www.javacodegeeks.com/2012/09/common-code-violations-in-java.html