首页 > 编程语言 >Java中十个常见的违规编码

Java中十个常见的违规编码

时间:2023-05-17 14:32:14浏览次数:46  
标签:语句 编码 Java 代码 十个 final boolean result age


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


最近,我给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. >
3.     return true;  
4.   }else{  
5.     return false;  
6.   }  
7. }



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


1. private boolean isEligible(int age){  
2.   boolean result;  
3. >
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. >
4. result = true;  
5.   }else{  
6. result = false;  
7.   }  
8.   return result;  
9. }


整个方法以一个单一的return语句重新编写:


1. private boolean isEligible(int age){  
2.  
3. return age >
4.  
5. }


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

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

五、使用大括号模块语句

永远别忘了使用大括号模块语句比如if、for、while。这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进bug的机会。

不建议:


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


建议:


1. if(age >
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 >
    2. voted
    3.     // eligible to vote.  
    4.   }  
    5. }



    合并成单一的if语句:


    1. if(age >
    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.  
      3. private void someMethod(){  
      4.   logger.log(MY_APP + e);  
      5.   ....  
      6.   ....  
      7.   logger.log(MY_APP + f);  
      8. }


      标签:语句,编码,Java,代码,十个,final,boolean,result,age
      From: https://blog.51cto.com/u_15012132/6291119

      相关文章

      • 高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)
        JavaNIO成功的应用在了各种分布式、即时通信和中间件Java系统中。证明了基于NIO构建的通信基础,是一种高效,且扩展性很强的通信架构。基于Reactor模式的高可扩展性架构这个架构的基本思路在“基于高可用性NIO服务器架构”(http://today.java.net/pub/a/today/2007/02/13/architectur......
      • 浅谈Javascript 中几种克隆(clone)方式
        一:在Javascript里,如果克隆对象是基本类型,我们直接赋值就可以了:Js代码varsStr="kingwell";varcStr=sStr;alert(cStr);//输出kingwellsStr="abc";alert(cStr);//输出kingwell; 把一个值赋给另一个变量时,当那个变量的值改变的时候,另一个值不会受到影响。 ......
      • Java 发展历史
         1995年5月23日,Java语言诞生1996年1月,第一个JDK-JDK1.0诞生1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术1996年9月,约8.3万个网页应用了JAVA技术来制作1997年2月18日,JDK1.1发布1997年4月2日,JavaOne会议召开,参与......
      • Java 主要特性
         Java语言是简单的:Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动分配......
      • JavaScript——数字超过精度导致数据有误
        前言接口返回的number类型的数据,超过了JavaScript中Number类型的限制,浏览器自动进行了转换;console.log(7232167009634730040)内容以下内容来自ClaudeJavaScript的Number类型可以安全表示的最大整数是2^53-1,也就是9007199254740991。大于这个值的整数在JavaScript......
      • Java Jackson框架使用小技巧
        Jackson框架:  Jackson是一个简单的、功能强大的、基于Java的应用库。它可以很方便完成Java对象和Json对象(xml文档or其它格式)进行互转。Jackson社区相对比较活跃,更新速度也比较快。  Jackson库有如下几大特性:  -高性能且稳定:低内存占用,对大/小JSON串,大/小对象的解析表现均......
      • JAVA实现html代码转为图片
        方法一:html2Image1、引入依赖<dependency><groupId>gui.ava</groupId><artifactId>html2image</artifactId><version>2.0.1</version></dependency>2、代码实现@ComponentpublicclassHtmlUtil{/***......
      • Java中List集合的addAll方法的小坑
        Java中List集合的addAll方法的小坑遇到的问题已有一个封装类的ArrayList的集合,命名为firstList,现在需要把firstList中的值复制给另一个List,另一个List命名为secondList,然后对secondList中封装类元素中的属性赋值。然后在操作时发现,当使用set方法对secondList的封装类元素赋值时......
      • Java数字转中文数字——支持:Integer、BigDecimal
        1、效果publicstaticvoidmain(String[]args){System.out.println(int2chineseNum(3456));System.out.println(int2chineseNum(-3456));System.out.println(bigDec2ChinaNum(newBigDecimal("12367.4852")));System.out.......
      • java 后端
        JFinal框架web.xml--接管所有请求--com.jfinal.core.JFinalFilterconfigClass设置配置文件数据层看着和c#比sql还是硬编码能看到,只是帮你事先生成。这个都没看到sql,感觉是用的时候再去生成。ModelModelAextendsBaseModelA<ModelA>extendsModel<MextendsModel>renderJson......