作家
登录

8种常见的Java不规范代码

作者: 来源: 2012-09-17 23:49:28 阅读 我要评论

在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性。

这个列表不区分顺序,全部来自一些代码质量检查工具,如 CheckStyle, FindBugs 和 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>

  • private boolean isEligible(int age){  
  •   if(age > 18){  
  •     return true;  
  •   }else{  
  •     return false;  
  •   }  
  • 上面的代码可以这么写(当然,下面的代码还可以改进,后面再说)。

    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;  

    简化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;  

    可以只使用一个return语句来重写此方法。

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

    不要为Boolean,Integer或String创建新的实例:

    避免创建新的Boolean,Integer,String等实例。使用Boolean.valueOf(true)代替new Boolean(true)。两种写法效果差不多但却可以改善性能。

    在代码块周围使用大括号:

    永远不要忘记在块类型语句(如:if,for,while)周围使用大括号。这可以减少代码歧义并且避免在你修改代码块的时候产生新的bug。

    不推荐

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

    推荐

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

    把方法的参数声明为final类型:

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

    推荐

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

    用大写命名public static final类型成员变量:

    总是使用大写命名用public static final类型变量。这样可以让你很容易区分常量和本地变量。

    不推荐

    1. public static final String testAccountNo = "12345678"

    推荐

    1. public static final String TEST_ACCOUNT_NO = "12345678"

    把多个if语句合并成一个:

    下面的代码

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

    可以使用一个if语句改写为:

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

    别忘了给switch添加default语句:

    总是给switch添加一个default语句。

    避免 重复 使用同样的字符串,创建一个常量吧:

    如果你需要在多个地方使用同一个字符串,那就创建一个字符串常量来使用吧。

    下面的代码:

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

    可以创建一个常量代替字符串"My Application":

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

    原文链接:http://www.oschina.net/question/100267_70351

    【编辑推荐】

    1. 让人抓狂匪夷所思的4组代码
    2. Java编程中写出好代码的建议
    3. 函数式编程是一个倒退
    4. 超级程序员神话
    5. Java项目经验——程序员成长的关键

      推荐阅读

      近期面试经历总结及公司评价(下)

    搜房网这家公司位于西直门外大街西环广场,第一次到那边,感觉人流量非常大,而且附近就是商业区。到了公司之后,面试官将我带到一个会议室,进行简单的面试,首先是自我介绍,然后叙述一下项目经历,当项目经历介绍>>>详细阅读


    本文标题:8种常见的Java不规范代码

    地址:http://www.17bianji.com/kaifa2/Java/12978.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)