近期,我给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. CSS——float属性备忘笔记

    通过指定CSS属性float的值,从而使元素向左或向右浮动,然后由后继元素向上移动以填补前面元素的浮动而空出的可用空间.CSS的float属性,作用就是改变块元素对象的默认显示方式,HTML标签设置了 ...

  2. [置顶] DX报表的开发流程(1)

    DevExpress.XtraReports简称为DX报表. 本文主要介绍下VS2010项目中如何开发DX报表,具体的内容包括: (1)下载安装 (2)报表文件创建 (3)页面文件的创建 (4)页面的 ...

  3. JavaScript进阶(三) 值传递和引用传递

    从C语言开始 有时候讲一些细节或是底层的东西,我喜欢用C语言来讲,因为用C更方便来描述内存里面的东西.先举一个例子,swap函数,相信有一些编程经验的人都见识过,声明如下,函数体我就不写了,各位脑补一 ...

  4. Hadoop基于文件的数据结构及实例

    基于文件的数据结构 两种文件格式: 1.SequenceFile 2.MapFile SequenceFile 1.SequenceFile文件是Hadoop用来存储二进制形式的<key,val ...

  5. shell oracle

    #!/bin/sh traffic= rm -rf test.txt data=`sqlplus -S anoscfg/anoscfg <<EOF spool test.txt set f ...

  6. 扩展SpringMVC以支持绑定JSON格式的请求参数

    此方案是把请求参数(JSON字符串)绑定到java对象,,@RequestBody是绑定内容体到java对象的. 问题描述: <span style="font-size: x-sma ...

  7. ocx控件避免弹出警告的类--2

    本文与 OCX控件避免弹出安全警告的类 http://www.cnblogs.com/lidabo/archive/2013/03/26/2981852.html 有些类似,只不过增加了几行代码(红色 ...

  8. [Usaco2008 Feb]Meteor Shower流星雨

    去年偶们湖南遭受N年不遇到冰冻灾害,现在芙蓉哥哥则听说另一个骇人听闻的消息: 一场流星雨即将袭击整个霸中,由于流星体积过大,它们无法在撞击到地面前燃烧殆尽, 届时将会对它撞到的一切东西造成毁灭性的打击 ...

  9. Windows XP环境下 搭建Android NDK环境

    搭建Android NDK环境 Windows XP环境下 1 一些下载 ① NDK r7:http://developer.android.com/sdk/ndk/index.html ② cygw ...

  10. Spring核心技术

    这是第二次看关于Spring的资料,由于刚開始学习Spring的时候是边看视频边学习的,所以更注重的是实现代码,可是对宏观的掌握还是不够,这次主要从宏观的角度来分析一下Spring. 什么是Sprin ...