Java中常见的代码冲突

在工作中,最近我对现有Java项目进行了代码清理。 完成该练习后,我可以看到在代码中一次又一次地发生了一组常见的代码冲突。 因此,我想出了此类常见违规的清单,并与同行分享,以使人们有意识地提高代码质量和可维护性。 我在这里将清单分享给更多的听众。

列表不是按任何特定顺序排列的,而是从所有代码质量工具(如CheckStyleFindBugsPMD)强制执行的规则中得出的。

开始了!

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

字符串文字“我的应用程序”可以制成常量,并在代码中使用。

public static final String MY_APP = 'My Application';

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


其他资源:

参考:我们的JCG合作伙伴 Veera Sundar博客上的Java常见Java代码违规


翻译自: https://www.javacodegeeks.com/2012/09/common-code-violations-in-java.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值