zoukankan      html  css  js  c++  java
  • JAVA代码静态检测之PMD

    今天再次想启动Java代码静态检测工具的利用问题,主要再次尝试用了PMD,发现不少代码编码规范问题和好的代码建议,并学到不少自己之前没有注意到的Java方便的基础知识,感觉很不错,把相关明白的好的规则回忆总结下,再以后编码过程中要把随时利用代码静态检查工具,用好代码静态检查工具养成习惯。今天用到的PMD检查规则如下:

    If表达式必须使用{},无论有多少语句
    While循环必须使用{},无论有多少语句
    IfElse表达式必须使用{} 
    For循环语句必须使用{}
    如果方法返回boolean,那么注意避免不必要的if..then..else语句
    避免if语句嵌套过深(会导致代码可读性降低)
    解决办法:建议if嵌套不要超过2层。使用工具方法封装更多的if语句或者把嵌套的if表达式放到同一个层次中。
    忽略大小写进行字符串比较时,使用String.equalsIgnoreCase,不要使用String.toLowerCase.前者有更好的性能而且还可以避免后者带来的本地化问题
    避免方法级的同步 
    块级别的同步可以确保内含真正需要同步的代码。
    使用集合类的isEmpty方法 
    java.util.Collection类的isEmpty方法提供判断一个集合类是否包含元素。不要是使用size()和0比较来重复类库已经提供的方法。 这条原则告诉我们一个普遍的原则:复用。尽量复用,充分利用已有的资源,不要重复自己(DRY)。比如apache提供了大量工具类供我们使用,我们没有必要再自己写了。
    没有使用的代码
    就一个原则:没有使用的就去掉,保持代码的干净、整洁。
    没有使用的代码包括:
    Ø 没有使用的私有成员
    Ø 没有使用的本地变量
    Ø 没有使用的私有方法
    Ø 没有使用的方法参数(参数定义了,但是方法内没有使用此参数)
    构建StringBuffer或StringBuilder时,如果知道长度,请指定,这样性能更好
    不指定,则默认长度是16,这样当长度不够时,就会有扩容的动作了。
    如果本地变量只被赋值一次,那么把它声明为Final
    如果方法参数从来不会被重新赋值,那么把它声明为Final
    如果想由数组构建List,请使用Arrays.asList
    数组复制,请使用System.arraycopy,别用循环
    ""+123的方式把数字转换为String,不够高效
    示例代码:     
            String s = "" + 123; // bad 
            String t = Integer.toString(456); // ok 
    避免代码中出现各种"空"的语句
    空Catch,空If,空while,空try,空finally,空switch,空Synchronized块,空static块
  • 相关阅读:
    设计模式之单例模式
    常用正则表达式
    前台页面json格式数据中文显示问号
    关于SpringMVC中静态资源配置问题
    Tomcat 9启动后控制台中文输出乱码问题
    SpringAOP中 order属性问题
    避坑!Mybatis Generator 生成文件的时候错误使用了其它数据库的同名数据表(关于nullCatalogMeansCurrent参数)
    关于JDBC中 Statement 和 PreparedStatement的区别
    关于Class.newInstance()方法被弃用
    Celery
  • 原文地址:https://www.cnblogs.com/doit8791/p/4106857.html
Copyright © 2011-2022 走看看