最近,我给Java项目做了一次代码清理工作。经过清理后,我发现一组常见的违规代码(指不规范的代码并不表示代码错误)重复出现在代码中。因此,我把常见的这些违规编码总结成一份列表,分享给大家以帮助Java爱好者提高代码的质量和可维护性。
这份列表没有依据任何规则或顺序,所有的这些都是通过代码质量工具包括CheckStyle,FindBugs和PMD检查出。一起来看下:
一、Eclipse编译器提供源代码格式输入
Eclipse提供自动源码格式选项,并且组织输入(删除未使用的代码)。你可以使用下面的这些快捷键进行操作。
Ctrl + Shift + F——源代码格式
Ctrl + Shift + O——组织输入并删除未使用的代码
代替手动调用这两个函数,只需根据Eclipse自动格式和自动组织选项,可以随时保存文件。
操作步骤,在Eclipse中进入Window -> Preferences -> Java -> Editor -> Save Actions,然后以选定的方式保存,最后检查Format source code + Organize imports。
二、避免多个返回(退出点)
依照你的方法,确保只有一个退出点。不要在同一个地方或多个地方使用返回。比如,下面的代码,NOT RECOMMENDED(不建议),这是因为有多个退出点(返回语句)。
- privatebooleanisEligible(intage){
-
if(age>18){
- returntrue;
- }else{
- returnfalse;
- }
- }
下面的代码有所提升,这是更高版本的。
- privatebooleanisEligible(intage){
- booleanresult;
-
if(age>18){
-
result=true;
- }else{
-
result=false;
- }
- returnresult;
- }
三、简化if-else
我写了几个实用的方法作为参考,检查语句条件并且基于该条件返回值。比如,考虑到isEligible方法,正如你之前所看到的:
- privatebooleanisEligible(intage){
- booleanresult;
-
if(age>18){
-
result=true;
- }else{
-
result=false;
- }
- returnresult;
- }
整个方法以一个单一的return语句重新编写:
- privatebooleanisEligible(intage){
-
returnage>18;
- }
四、不要给Boolean, Integer或者String创建新的实例
避免给Boolean,Integer,String创建新的实例。比如,使用new Boolean(true),Boolean,valueOf(true)。修改后的语句与之前的效果基本相同,除了在性能上有所提升。
五、使用大括号模块语句
永远别忘了使用大括号模块语句比如if、for、while。这样做的好处是当你在修改模块级语句时减少了模糊代码并且避免引进bug的机会。
不建议:
- if(age>18)
-
result=true;
- else
-
result=false;
建议:
- if(age>18){
-
result=true;
- }else{
-
result=false;
- }
六、以final类型标记方法参数,任何时候都适用
请记住,以final类型标记方法参数,任何时候都适用。这样做的好处在于当你不小心修改参数值时,编译器会给你警告,同时它还能以更好的方式优化编译器代码字节。
建议:
- privatebooleanisEligible(finalintage){...}
七、在UPPERCASE中命名public static final字段
在UPPERCASE中命名public static final字段(通常也被称之为常量)。这个可以让你轻松区分常量字段和局部变量之间的不同。
不建议:
- publicstaticfinalStringtestAccountNo="12345678";
建议:
- publicstaticfinalStringTEST_ACCOUNT_NO="12345678";,
八、组合成单一的if语句
在尽可能多的情况下,把多个if语句组合成单一的if语句,比如下面的代码:
- if(age>18){
-
if(voted==false){
- //eligibletovote.
- }
- }
合并成单一的if语句:
- if(age>18&&!voted){
- //eligibletovote
- }
九、Switch应该有default
始终给Switch语句添加default。
十、使用常量来避免重复定义相同的字符串值
如果你在多个地方必须使用字符串,那么使用常量来避免重复定义拥有相同值的字符串。
比如,看下面的代码:
- privatevoidsomeMethod(){
- logger.log("MyApplication"+e);
- ....
- ....
- logger.log("MyApplication"+f);
- }
string literal“我的应用”可以作为常量并且能在代码中使用。
- publicstaticfinalStringMY_APP="MyApplication";
- privatevoidsomeMethod(){
- logger.log(MY_APP+e);
- ....
- ....
- logger.log(MY_APP+f);
- }
英文出自:veerasundar
相关推荐
JAVA中十个常见的违规编码 ,写的很详细,很有借鉴意义
java编码规范 java编码规范 java编码规范 java编码规范
编码问题一直困扰着开发人员,尤其在Java中更加明显,因为Java是跨平台语言,不同平台之间编码之间的切换较多。本文将向你详细介绍Java中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别...
深入分析 Java 中的中文编码问题(1) - Java综合 - Java - ITeye论坛.mht
Java中如何正确使用字体编码Java中如何正确使用字体编码Java中如何正确使用字体编码
java编码格式问题,对常见的java中文乱码作出分析及提出解决方案
Java编码规范.doc Java编码规范.doc Java编码规范.doc Java编码规范.doc
java中20个常见异常举例源码,空指针异常,数组越界等,自己写的,以后查异常也方便了
NULL 博文链接:https://thinktothings.iteye.com/blog/1138741
本文将向你详细介绍 Java 中编码问题出现的根本原因,你将了解到:Java 中经常遇到的几种编码格式的区别;Java 中经常需要编码的场景;出现中文问题的原因分析;在开发 Java web 程序时可能会存在编码的几个地方,一...
java的TLV包的编码和解码,能够对Tag Length Value对应的值进行编码和解码。包内包含jar包和源码包,还有一个java写的带有详细注释的Demo
修改资源中某位兄弟的,为了做一个java 的桌面程序,运行好使。
用java修改文件的编码
Java、编码规范、Java编码规范、阿里巴巴、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里巴巴Java编码规范、阿里...
资源名称:Java安全编码标准内容简介:《java安全编码标准》是java安全编码领域最权威、最全面、最详细的著作,java之父james a. gosling推荐。不仅从语言角度系统而详细地阐述java安全编码的要素、标准、规范和最佳...
Java判断文件的编码, 适用于utf-8和gbk码的判断。
我在网上找了半天的java、js的base64编码解码结果没有,只好自己写了,js一个文件,java一个文件,调用里面是使用方法
Java中的字符集编码入门(五)Java代码中的字符编码转换Part1.pdf