近期,我给Java项目做了一次代码清理工作。经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)反复出如今代码中。因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性。

这份列表没有根据不论什么规则或顺序,全部的这些都是通过代码质量工具包含CheckStyleFindBugsPMD检查出。一起来看下:

一、Eclipse编译器提供源码格式输入

Eclipse提供自己主动源代码格式选项,而且组织输入(删除未使用的代码)。你能够使用以下的这些快捷键进行操作。

Ctrl + Shift + F——源码格式

Ctrl + Shift + O——组织输入并删除未使用的代码

取代手动调用这两个函数,仅仅需依据Eclipse自己主动格式和自己主动组织选项,能够随时保存文件。

操作步骤,在Eclipse中进入Window -> Preferences -> Java -> Editor -> Save Actions,然后以选定的方式保存,最后检查Format source code + Organize imports。

二、避免多个返回(退出点)

按照你的方法,确保仅仅有一个退出点。不要在同一个地方或多个地方使用返回。比方,以下的代码,NOT RECOMMENDED(不建议),这是由于有多个退出点(返回语句)。

  1. private boolean isEligible(int age){
  2. if(age > 18){
  3. return true;
  4. }else{
  5. return false;
  6. }
  7. }

以下的代码有所提升,这是更高版本号的。

  1. private boolean isEligible(int age){
  2. boolean result;
  3. if(age > 18){
  4. result = true;
  5. }else{
  6. result = false;
  7. }
  8. return result;
  9. }

三、简化if-else

我写了几个有用的方法作为參考,检查语句条件而且基于该条件返回值。比方,考虑到isEligible方法,正如你之前所示:

  1. private boolean isEligible(int age){
  2. boolean result;
  3. if(age > 18){
  4. result = true;
  5. }else{
  6. result = false;
  7. }
  8. return result;
  9. }

整个方法以一个单一的return语句又一次编写:

  1. private boolean isEligible(int age){
  2. return age > 18;
  3. }

四、不要给Boolean, Integer或者String创建新的实例

避免给Boolean,Integer,String创建新的实例。比方,使用new Boolean(true),Boolean,valueOf(true)。改动后的语句与之前的效果基本同样,除了在性能上有所提升。

五、使用大括号模块语句

永远别忘了使用大括号模块语句比方if、for、while。这样做的优点是当你在改动模块级语句时降低了模糊代码而且避免引进bug的机会。

不建议:

  1. if(age > 18)
  2. result = true;
  3. else
  4. result = false;

建议:

  1. if(age > 18){
  2. result = true;
  3. }else{
  4. result = false;
  5. }

六、以final类型标记方法參数,不论什么时候都适用

请记住,以final类型标记方法參数,不论什么时候都适用。这样做的优点在于当你不小心改动參数值时,编译器会给你警告,同一时候它还能以更好的方式优化编译器代码字节。

建议:

  1. private boolean isEligible(final int age){ ... }

七、在UPPERCASE中命名public static final字段

在UPPERCASE中命名public static final字段(通常也被称之为常量)。这个能够让你轻松区分常量字段和局部变量之间的不同。

不建议:

  1. public static final String testAccountNo = "12345678";

建议:

  1. public static final String TEST_ACCOUNT_NO = "12345678";,

八、组合成单一的if语句

在尽可能多的情况下,把多个if语句组合成单一的if语句,比方以下的代码:

  1. if(age > 18){
  2. if( voted == false){
  3. // eligible to vote.
  4. }
  5. }

合并成单一的if语句:

  1. if(age > 18 && !voted){
  2. // eligible to vote
  3. }

九、Switch应该有default

始终给Switch语句加入default。

十、使用常量来避免反复定义同样的字符串值

假设你在多个地方必须使用字符串,那么使用常量来避免反复定义拥有同样值的字符串。

比方,看以下的代码:

  1. private void someMethod(){
  2. logger.log("My Application" + e);
  3. ....
  4. ....
  5. logger.log("My Application" + f);
  6. }

string literal“我的应用”能够作为常量而且能在代码中使用。

  1. public static final String MY_APP = "My Application";
  2. private void someMethod(){
  3. logger.log(MY_APP + e);
  4. ....
  5. ....
  6. logger.log(MY_APP + f);
  7. }

Java学习之道:Java中十个常见的违规编码的更多相关文章

  1. Java中十个常见的违规编码

    摘要:作者Veera Sundar在清理代码工作时发现一些常见的违规编码,因此,Veera Sundar把针对常见的一些违规编码总结成一份列表,以便帮助Java爱好者提高代码的质量和可维护性. 最近, ...

  2. Java学习之道:Java 导出EXCEL

    1.Apache POI简单介绍  Apache POI是Apache软件基金会的开放源代码函式库.POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开 ...

  3. Java学习之道:Java项目打包发布

    Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...

  4. Java基础语法(8)-数组中的常见排序算法

    title: Java基础语法(8)-数组中的常见排序算法 blog: CSDN data: Java学习路线及视频 1.基本概念 排序: 是计算机程序设计中的一项重要操作,其功能是指一个数据元素集合 ...

  5. Java学习-040-级联删除目录中的文件、目录

    之前在写应用模块,进行单元测试编码的时候,居然脑洞大开居然创建了一个 N 层的目录,到后来删除测试结果目录的时候,才发现删除不了了,提示目录过长无法删除.网上找了一些方法,也找了一些粉碎机,都没能达到 ...

  6. 摘自:java夜未眠之java学习之道

    目前Java可以说是产业界和学术界最热门的语言,许多读者都很急切想把Java学好.除非是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的.花时间,不打紧,就是怕方法错误,事倍功半.我认为 ...

  7. Java学习之道:空指针错误求解救????????????

    运行下面这个主方法红色代码的地方就报如下错: https://api.weibo.com/2/users/show.json?access_token=2.00szM9cCc4R_EC6ebcf150 ...

  8. Java 学习笔记(4)——java 常见类

    上次提前说了java中的面向对象,主要是为了使用这些常见类做打算,毕竟Java中一切都是对象,要使用一些系统提供的功能必须得通过类对象调用方法.其实Java相比于C来说强大的另一个原因是Java中提供 ...

  9. Java学习之道:jdk环境变量配置方法

    JDK(Java Development Kit)是整个Java的核心,包含了Java执行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,无论是做JAVA开发还是做安卓开发,都必须 ...

随机推荐

  1. Swift - 使用UISearchController实现带搜索栏的表格

    我原来写过一篇文章“Swift - 带结果列表的搜索条(UISearchDisplayController)的用法”,当时是使用UISearchDisplayController来实现带有搜索功能的列 ...

  2. c语言, objective code(new 2)

    参考: 1. C中的继承和多态 http://www.cnblogs.com/skynet/archive/2010/09/23/1833217.html

  3. 80 多个 Linux 系统管理员必备的监控工具

    随着互联网行业的不断发展,各种监控工具多得不可胜数.这里列出网上最全的监控工具.让你可以拥有超过80种方式来管理你的机器.在本文中,我们主要包括以下方面: 命令行工具 网络相关内容 系统相关的监控工具 ...

  4. Oracle 的一张表没有主键,如何映射Hibernate

    我的一个Oracle表,没有任何主键,然后生成的时候就将所有的字段都作为联合主键,如果所有的字段都做联合主键的话,这样只要一个字段为null,查询的话这条记录就不能查询到. 然后我想到Oracle数据 ...

  5. Ubuntu 14.04LTS Gnome GUI初体验及163更新源配制

    Ubuntu 14.04 LTS于前天(2014.4.17)公布, 我今天将我的系统升级到最新, 体验了下最新的UI系统. 我选择了Ubuntu Gnome 的GUI界面.我曾经的系统是12.04lt ...

  6. Linux改动文件权限记录

    1.从文件类型上分可分为三种, 用ls-l查询,以"一"开头的是文件,以字母"d"开头的是文件夹(俗称文件夹),以字母"l"开头的是连接. ...

  7. Swift - 发送消息(文本,图片,文件等)给微信好友或分享到朋友圈

    通过调用微信提供的API接口,我们可以很方便的在应用中发送消息给微信好友,或者分享到朋友圈.在微信开发平台(https://open.weixin.qq.com)里,提供了详细的说明文档和样例.但由于 ...

  8. KMP原理、分析及C语言实现

    (是在matrix67博客基础上整理而来,整理着:华科小涛@http://www.cnblogs.com/hust-ghtao/) 有些算法可以让人发疯,KMP算法就是一个.在网上找了很多资料讲的都让 ...

  9. Servlet的学习之Session(4)

    在本篇中,我们来使用Session完成一个用户登录的案例,前提声明:这个案例主要用于学习Session技术,是属于比较简单的类型,以后会采用MVC模式来开发登录,那就会比较复杂. 现在大多数网站都提供 ...

  10. PreTranslateMessage和TranslateMessage区别

    PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的,绝大多数本窗口的消息都要通过这里,比较常用,当需要在MFC之前处理某些消息时,常常要在这里添加代码. ...