`
TechBirds
  • 浏览: 82095 次
文章分类
社区版块
存档分类
最新评论

Java中十个常见的违规编码

阅读更多

有意无意的,在开发中经常会忽略一些很简单编码规范,很感谢作者的总结,再次也做一个简单的小记。

转载地址:http://www.csdn.net/article/2012-09-11/2809829-common-code-violations-in-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. privatebooleanisEligible(intage){
  2. if(age>18){
  3. returntrue;
  4. }else{
  5. returnfalse;
  6. }
  7. }

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

  1. privatebooleanisEligible(intage){
  2. booleanresult;
  3. if(age>18){
  4. result=true;
  5. }else{
  6. result=false;
  7. }
  8. returnresult;
  9. }

三、简化if-else

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

  1. privatebooleanisEligible(intage){
  2. booleanresult;
  3. if(age>18){
  4. result=true;
  5. }else{
  6. result=false;
  7. }
  8. returnresult;
  9. }

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

  1. privatebooleanisEligible(intage){
  2. returnage>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. privatebooleanisEligible(finalintage){...}

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

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

不建议:

  1. publicstaticfinalStringtestAccountNo="12345678";

建议:

  1. publicstaticfinalStringTEST_ACCOUNT_NO="12345678";,

八、组合成单一的if语句

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

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

合并成单一的if语句:

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

九、Switch应该有default

始终给Switch语句添加default。

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

如果你在多个地方必须使用字符串,那么使用常量来避免重复定义拥有相同值的字符串。

比如,看下面的代码:

  1. privatevoidsomeMethod(){
  2. logger.log("MyApplication"+e);
  3. ....
  4. ....
  5. logger.log("MyApplication"+f);
  6. }

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

  1. publicstaticfinalStringMY_APP="MyApplication";
  2. privatevoidsomeMethod(){
  3. logger.log(MY_APP+e);
  4. ....
  5. ....
  6. logger.log(MY_APP+f);
  7. }

英文出自:veerasundar


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics