代码常见错误

Posted on 2006-07-05 15:43 left 阅读(1518) 评论(1)  编辑  收藏
   常见错误
        不符合团队代码、设计规范
        循环的一次操作中多次调用iterator.next()
        数据库、流等资源未关闭
        HttpSession内存储的对象 不可序列化
        空指针引用
        可能的空指针引用
        正则表达式格式错误
        PreparedStatement的参数设置/ ResultSet内容访问,从索引0开始
        忽略方法返回值, 如 String a=.. ; a.trim();
        使用new Boolean(true)
        调用 new String(string )
        使用+连接String
        调用 gc资源回收 代码
        自增量的覆盖 i=i++;
        Serializable对象包涵Non-transient non-serializable对象
        Initialization circularity 循环初始化过程
        Date 类型set函数的参数范围错误, 月份为[0,11]...
        绝对路径的硬编码 File("/home/dannyc/deployment");
        java.lang.Integer、 java.lang.Float、或String对象 比较 使用==或者 !=
        测试浮点数的相等性,使用if ( Math.abs(x - y) < .0000001 )
        数组对象比较使用equals, 应使用 java.util.Arrays.equals(Object[], Object[]).
        对象定义了equal、 tostring、或者hashcode方法
       
        jsp错误

    不良习惯

        不符合Camel命名原则
        重复代码
        三值逻辑
        无用的代码流程控制
        非null值的null判断, null比较
        调用 String.equals("")
        String对象上调用toString()
        整数除的结果转换为float/double
        不需要的instanceof判断 / 没必要的对象cast操作
        无用、未用的 field, parameters, local variable
        从未被调用的方法
        整数是否为奇数判断 x % 2 == 1
        方法返回null
        调用subString(0)
        PreparedStatement使用非final的sql String 对象
        public finalize()

常用的metics
    McCabe 复杂性
    代码嵌套深度
    代码圈复杂性

建议
    Comparator实现 Serializable接口
    考虑缓存常用的值,比如关于常量的计算值
    避免深层次 if 嵌套语句

解决??
    严格执行编程规范
    使用优秀、经过验证的框架、可重用包、思想
    代码评审 / 结对编程 / 代码质量自动检查工具
    简单编程
    测试驱动开发

参考: 
  findbugs: http://findbugs.sourceforge.net/
  metrics: http://metrics.sourceforge.net/
  pmd: http://pmd.sourceforge.net/
 

Feedback

# re: 代码常见错误  回复  更多评论   

2007-08-09 15:25 by 静儿
总结得很全面啊

只有注册用户登录后才能发表评论。


网站导航:
 

posts - 14, comments - 9, trackbacks - 0, articles - 0

Copyright © left