java 代码冲突检测

该列表不是按任何特定顺序排列的,而是从所有代码质量工具(如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) 。 后面的语句具有与前一个语句相同的效果,但是它提高了性能。

在块语句周围使用花括号。

永远不要忘记在块级语句周围使用花括号,例如ifforwhile 。 这样可以减少代码的歧义,并避免在修改块级语句时引入新错误的机会。

不建议

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);
}

字符串文字“ My Application”可以制成常量,并在代码中使用。

public static final String MY_APP = 'My Application';

private void someMethod(){
  logger.log(MY_APP + e);
  ....
  ....
  logger.log(MY_APP + f);
}


其他资源:

  • Java最佳实践的集合。
  • 可用Checkstyle检查的列表。
  • PMD规则集列表