`

pmd检测出的代码效率的比较和总结【原创】

 
阅读更多
以下是我在检查项目pmd的时候积累下来的,和大家分享下,呵呵。
1:
Use equals() to compare strings instead of '==' or '!='
解释:
使用equals()比较,而不是字符串'=='或'!='
2:
String.indexOf(‘char’)的速度比String.indexOf(“字符串”)。
解释:
比如String.indexOf('d')的速度就比String.indexOf("d")要快

3:
Avoid if (x != y) ..; else ..;
解释:
pmd说避免把判断非摆在前面,这样会引起阅读混淆,要判断的话,就把 == 的放在前面,掉转下就好的,容易读和理解。

4:
x.equals("2"); // should be "2".equals(x)
that way if the String is null you won't get a NullPointerException, it'll just return false

解释:
如果参数在前面,如果参数是空的话,程序会抛出NullPointerException,所以
应该把确定的字符串放在前面,把参数放在括号里面


5
建议:Substitute calls to size() == 0 (or size() != 0) with calls to isEmpty()

意思是说对List类的if(list.size()==0),建议使用isEmpty()来操作

6
if (Integer.parseInt(newInput) == 0)
{
return true;
} else
{
return false;
}

没有必要为一个返回true和false的行为做if else 直接
eturn Integer.parseInt(newInput) == 0 就行了

7:
  public class Foo {
    public int foo() {
      int x = doSomething();
      return x;  // instead, just 'return doSomething();'
    }
  }

Avoid unnecessarily creating local variables


如果只是返回doSomething的返回值,就没必要在弄一个实体了


8:
String.trim()。长度()== 0是一种低效的方法来验证一个空字符串。


9:
public class Foo {
    private int x;  //Why bother saving this?
    public void foo(int y) {
     x = y + 5;
     return x;
    }
}


如果x只用于foo这个方法。那么。建议放在foo里面当局部变量不要做全局变量了

10:
用equals来判断好过 ==

11:
判空用isEmpty

12
private List<MenuFunction> menuFunctionList = new ArrayList<MenuFunction>();
而不要
private ArrayList<MenuFunction> menuFunctionList = new ArrayList<MenuFunction>();

好像是说更支持多态吧。我也不知道,感觉大吃小总比小吃小好。List吃Arraylist.

2
0
分享到:
评论
2 楼 ml365 2010-12-11  
francis.xjl 写道
第8个有更好的替代方案么?

第10个为什么呢?equal跟==是完全不一样的概念...这用什么要根据情况的吧.. .

呵呵,感谢您的回帖。第八个其实我也不是很明白。pmd检测出来我就改了。第十个的话,以后遇到字符串相等我就用equals咯!呵呵
1 楼 francis.xjl 2010-12-11  
第8个有更好的替代方案么?

第10个为什么呢?equal跟==是完全不一样的概念...这用什么要根据情况的吧.. .

相关推荐

    PMD检测规则

    PMD是一款开源的静态代码检测工具,可以检查代码的质量问题,文件是对PMD检测规则进行说明,解压密码:PMD。

    Java代码检查工具PMD

    PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。  ...

    Eclipse PMD插件分析代码规则(中文).xls

    Eclipse PMD插件分析代码规则(中文),描述部分有中文解释,待补充。

    Java程序代码检查工具PMD

    PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。 ...

    pmd代码规范工具

    PMD是一款静态代码分析工具,它能够自动检测各种潜在缺陷以及不安全或未优化的代码。 PMD更多地是集中在预先检测缺陷上,它提供了高度可配置的丰富规则集,用户可以方便配置对待特定项目使用那些规则

    pmd-4.2.5 Java代码检测

    很好用的Java代码漏洞检测的工具 可以很容易的就检出出你所写的代码 有哪些漏洞

    pmd代码检查工具使用

    pmd代码检查工具使用心得,自己从网上收集了一些资料结合自己的使用整理出来的一个文档,希望给大家带来一些帮助,pmd是个不错的代码检查工具

    PMD用于根据源代码分析查找不良的编程习惯

    PMD:用于根据源代码分析查找不良的编程习惯

    pmd-bin-6.19.0-代码重复性检查工具.zip

    pmd-bin 静态代码分析工具 PMD是静态源代码分析器。 它发现常见的编程缺陷,例如未使用的变量,空的catch块,不必要的对象创建等。 它主要涉及Java和Apex,但支持其他六种语言。 PMD具有许多内置检查(以PMD术语,...

    java代码质量检测工具包含findbug、pmd插件等

    myeclipse插件java代码质量检测 findbug pmd可以发现代码中的问题,实现自动的检测和优化代码,sourcecounter可以统计代码量

    pmdJava程序代码检查工具

    PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。 ...

    静态java分析工具PMD

    PMD正是这样一种工具,可以直接使用它自带的规则(当然也可以使用自己的规则)对Java源程序进行分析找出程序存在的问题,可以很大程度上的减轻代码检查工作的繁琐,为项目组今后的维护和开发工作起到指导的作用。...

    代码分析工具使用PMD

    Eclipse代码分析工具使用PMD

    PMD报错原因修改总结.pdf

    PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等。该软件功能强大,扫描效率高,是Java程序员debug的好帮手。与...

    阿里巴巴Java代码质量检测插件:p3c-pmd-2.1.1.jar

    阿里巴巴Java代码质量检测插件:p3c-pmd-2.1.1.jar https://github.com/alibaba/p3c

    eclipse代码检查工具PMD规则列表

    自己整理的PMD检查的各个规则说明,其中打○的是我自己用的规则,大家自己按实际需要选择吧,有不对的地方请多多指教。

    p3c-pmd-2.0.0.jar

    可以利用p3c-pmd-2.0.0.jar来实现基于阿里代码规约的代码规范检测。执行命令: $JAVA_HOME/bin/java -Dpmd.language=en -cp $BASE_PATH/p3c-pmd-2.0.0.jar net.sourceforge.pmd.PMD -d $TEMPDIR -R rulesets/java/...

    pmd开源分析Java代码的工具

    PMD是一种开源分析Java代码的工具,通过静态分析获知代码错误,该工具可以做到检查Java代码中是否含有未使用的变量、是否含有空的抓取块、是否含有不必要的对象等等

    Eclipse离线配置PMD插件

    PMD是一种分析Java代码错误的工具。与其他分析工具不同的是,PMD通过静态分析获知代码错误。也就是说,在不运行Java程序的情况下报告错误。PMD附带了许多可以直接使用的规则,利用这些规则可以找出Java源程序的许多...

    Java代码检查工具 PMD.zip

    Java代码检查工具 PMD ,PMD是一款采用BSD协议发布的Java程序代码检查工具。该工具可以做到检查Java代码中是否含有未...

Global site tag (gtag.js) - Google Analytics