列表不是按任何特定顺序排列的,而是从所有代码质量工具(如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;
else
result = 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