2KB项目,专业的源码交易网站 帮助 收藏 每日签到

8种常见的Java不规范代码

  • 时间:2019-01-23 18:46 编辑:2KB 来源:2KB.COM 阅读:438
  • 扫一扫,手机访问
  • 分享
摘要:
Java 英文原文:8 Common Code Violations in Java 在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性。 这个列表不区分顺序,全部来自一些代码质量检查工具,如  CheckStyleFindBugs 和  PMD
在Eclipse中格式化源代码并管理import语句 Eclipse提供了自动格式化源代码和管理import语句的功能(并移除未使用的语句)。你可以使用下面的快捷键来使用这些功能。
  • Ctrl + Shift + F – 格式化源代码。
  • Ctrl + Shift + O – 管理import语句并移除未使用的语句。
除了手动执行这两个功能外,你还可以让Eclipse在保存文件的时候自动格式化源代码并自动管理import语句。要做到这个,在Eclipse中,到  Window -> Preferences -> Java -> Editor -> Save Actions并启用  Perform the selected actions on save,选中  Format source code和  organize imports
避免在方法中出现多个return语句(退出点): 在你的方法中,确保只有一个  退出点。不要在一个方法中使用多于一个return语句。

如,下面的代码是 不推荐的,因为它有多个退出点(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创建新的实例: 避免创建新的Boolean,Integer,String等实例。使用Boolean.valueOf(true)代替new Boolean(true)。两种写法效果差不多但却可以改善性能。 在代码块周围使用大括号: 永远不要忘记在块类型语句(如:if,for,while)周围使用大括号。这可以减少代码歧义并且避免在你修改代码块的时候产生新的bug。

不推荐

if(age > 18)
  return true;
else
  return false;
推荐

if(age > 18){
  return true;
}else{
  return false;
}
把方法的参数声明为final类型:

总是在所有兼容的地方把把方法的参数声明为final。这样做的话,当你无意中修改了参数的值,编译时会得到警告,并且编译生成的字节码也会得到优化。

推荐

private boolean isEligible(final int age){ ... }
用大写命名public static final类型成员变量: 总是使用大写命名用public static final类型变量。这样可以让你很容易区分常量和本地变量。

不推荐

public static final String testAccountNo = "12345678";
推荐

public static final String TEST_ACCOUNT_NO = "12345678";
把多个if语句合并成一个:

下面的代码


if(age > 18){
  if( voted == false){
    // eligible to vote.
  }
}
可以使用一个if语句改写为:



if(age > 18 && !voted){
  // eligible to vote
}
别忘了给switch添加default语句: 总是给switch添加一个default语句。
避免  重复  使用同样的字符串,创建一个常量吧: 如果你需要在多个地方使用同一个字符串,那就创建一个字符串常量来使用吧。 下面的代码:
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最佳实践 ,  代码规范检查 ,  PMD规则列表


本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部