美文网首页
[findbugs] 代码质量列表

[findbugs] 代码质量列表

作者: AustinPup | 来源:发表于2019-04-25 10:38 被阅读0次
    1. Reliance on default encoding
    • 流操作要确定编码格式
    • 标准
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(path + item), "UTF-8"));
    
    不使用FileReader in = new FileReader(file);而是改用
    InputStreamReader sss = new InputStreamReader(new FileInputStream(file), "utf-8");
    filereader 默认没有编码指定,而使用默认方式。
    
    
    1. Method ignores results of InputStream.skip()
    • InputStream.skip()方法忽略返回的多个字符,如果对结果没有检查就没法正确处理用户跳过少量字符请求的情况
    1. Result of integer multiplication cast to long
    • Dodgy Code
    • 标准
     long convertDaysToMilliseconds(int days) { return 1000L*3600*24*days; }
    

    整数相乘,要显示标注L

    • 分析
      为什么编译器不能自动识别呢?答案是:很麻烦,并且这会使用编译器的效率非常低!对于有汇编经验的人来说,应该了解用汇编实现动态判断一个结果应该分配到一个long的空间还是int的空间有多复杂吧,而编译器有不能随便随便把int * int 的结果分配一个long空间,因为这会非常浪费内存,所以出于对效率和资源的考虑,最后的决定就是,凡是int * int * ....这样的计算结果一律都存放到int空间里,如果是long * int * .....则一律存放到long空间里,这就解释了为什么上面要在1000后面加个"L"了。
    1. WMI_WRONG_MAP_ITERATOR
    • 标准
    for (Map.Entry<String, JMenu> entry : menuList.entrySet()) {    
       mb.add(entry.getValue());  
    }  
    
    • 分析
      map的遍历,采用entry的方式,效率更高;尤其对大数量的map;
      不要使用先keyset后查value的方式

    相关文章

      网友评论

          本文标题:[findbugs] 代码质量列表

          本文链接:https://www.haomeiwen.com/subject/bwdagqtx.html