android的Findbugs问题整理
1. 对字符串不相等的判断
- 错误
if(chapterInfo.getPayMode()
!= String.valueOf(com.shuqi.base.common.Constant.PAYMODE_BOOK) && chapterInfo.getPayMode() !=String.valueOf(com.shuqi.base.common.Constant.PAYMODE_CHAPTER)
&& drawType == DrawType.DRAW_COUNT_DOWN_TYPE) {mRenderData.setDrawType(DrawType.DRAW_LOADING_TYPE);}
- 正确
if(!String.valueOf(com.shuqi.base.common.Constant.PAYMODE_BOOK).equals(chapterInfo.getPayMode())
&& !String.valueOf(com.shuqi.base.common.Constant.PAYMODE_CHAPTER).equals(chapterInfo.getPayMode())
&& drawType == DrawType.DRAW_COUNT_DOWN_TYPE) {mRenderData.setDrawType(DrawType.DRAW_LOADING_TYPE);}
或者调用 TextUtils.equals() 方法
2. 典型数组越界


3. 创建文件夹判断返回值
在创建文件时,虽然判断了文件不存在再创建,但未处理创建失败的情况,会有不可预知的错误,应该处理下创建失败的情况(但不是一味的try),应给外部返回相应的错误码。
4. 创建单实例,保证线程安全
publicstaticDownFileManager
getInstance() {if(mInstance
==null)
{mInstance
=newDownFileManager();}returnmInstance;}
- 正确的做法是:
publicstaticDownFileManager
getInstance() {if(mInstance
==null)
{synchronized(DownFileManager.class)
{if(mInstance
==null)
{mInstance
=newDownFileManager();}}}returnmInstance;}
或
publicsynchronizedstaticDownFileManager
getInstance() {if(mInstance
==null)
{mInstance
=newDownFileManager();}returnmInstance;}
5. 关于弱引用
使用SoftReference.get()可能会有空指针异常, 必须 对返回值进行判断
6. 分支执行代码相同(DB_DUPLICATE_BRANCHES)
这个就是if-else分支中执行的代码是一样的,一种好的编程实践就是在写if时,一定要考虑到是否需要else分支,某些团队要求有if分支,就必须要有else分支,哪怕else分支什么也不做。
7. 需要float或double类型变量,除法运算分子或分母需要一个float或double
8. switch要实现default(SF_SWITCH_NO_DEFAULT)
9. 静态变量尽量final,若需要赋值操作,降低可见性设置set/get方法
不允许直接访问一个变量,必须提供对应的方法来访问,这是一个强制性的规约。静态常量请一定要添加 final 关键字。
10. float与double类型值判断相等的问题


请使用Utility.floatEquals方法来判断
publicstaticbooleanfloatEquals(floata,floatb)
{returnMath.abs(a
- b) < .0000001;}
android的Findbugs问题整理的更多相关文章
- android精品开源项目整理
转载地址:http://www.eoeandroid.com/thread-311366-1-1.html 前言:无论你是android的初学者,还有是Android开发了好多年的高手,可能都会有很多 ...
- Android开发——Fragment知识整理(二)
0. 前言 Android开发中的Fragment的应用非常广泛,在Android开发--Fragment知识整理(一)中简单介绍了关于Fragment的生命周期,常用API,回退栈的应用等知识.这 ...
- Android开发——Fragment知识整理(一)
0. 前言 Fragment,顾名思义是片段的意思,可以把Fragment当成Activity的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成.Fragment需要被嵌 ...
- Android 常用开源代码整理
1.AndroidAnnotations一个强大的android开源注解框架, 基本上可以注入任何类型, 比一般的所谓的注入框架要快, 因为他是通过生成一个子类来实现的绑定.具体查看文档. 2.and ...
- [转]Android精品开源项目整理
前言: 无论你是android的初学者,还有是android开发多年的高手,可能都会有很多想法和经验希望与人分享交流,渴望能够接触到更多的实战项目,正所谓所谓与高手论道才能互补所长,与英雄 ...
- 51建设Android版一些技术整理
不知不觉几个月就过去了,新项目已经发了两个大的版(其实已经迭代了3版),趁着项目新版刚刚上线闲下来的时间整理下用到的技术点. 整体架构 采用MVP Android官方MVP架构示例项目解析 推荐一个插 ...
- 【我的Android进阶之旅】Android Studio如何轻松整理字符串到string.xml中
使用Android Studio一段时间了,还有很多小技巧没有掌握.比如:平常将字符串整理到string.xml中,都是手动的去复制字符串到string.xml中,然后再回来修改引用该字符串的代码,这 ...
- Android高级工程师面试题整理
这些题目是网友去百度.小米.乐视.美团.58.猎豹.360.新浪.搜狐等一线互联网公司面试被问到的题目.熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率. 主要分为以下几部分: (1)java ...
- FindBugs规则整理
http://blog.csdn.net/jdsjlzx/article/details/21472253/ 配置FindBugs和常见FindBugs错误 http://blog.csdn.net/ ...
随机推荐
- 关于Scanner类
Scanner类 1.常用的两个方法: public int nextInt():获取一个int类型的值 public String nextLine():获取一个St ...
- 关键字voltale
***volatile在多线程用的最多.*** #include<stdio.h> #include<stdlib.h> int main() { ; i < ; i++ ...
- use zlib lib to compress or decompress file
If you want to compress or decompress file when writing C++ code,you can choose zlib library,that's ...
- bat自动打包压缩实现
1.引言 本文档的编辑目的是为了实bat脚本自动打包功能,包含包的名字命名,压缩文件内外层文件夹的名字:包含svn版本号等: 2.实现介绍 (1)获取svn号,生成批处理文件 写一个pak.bat文件 ...
- 关于HTTP GET & POST的区别(转)
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE. URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTT ...
- 以Apache模块的方式编译安装php-5.4.27
为什么要安装低版本的php? 由于apc,xcache的更新版本跟不上php版本的速度,所以,我们需要安装比较稳定的php低版本程序,再安装其它与之相匹配的扩展. 开工: 新建用户及用户组 group ...
- CF341C. Iahub and Permutations [DP 排列]
http://codeforces.com/contest/341/problem/C 题意: 有一个长度为n的排列a,其中有一些位置被替换成了-1.你需要尝试恢复这个排列,将-1替换回数字.求有多少 ...
- UbuntuNFS服务器配置
NFS服务的配置====================1,下载并安装NFS sudo apt-get install nfs-kernel-server 2,配置NFS sudo vi /etc/e ...
- [Python Study Notes]CS架构远程访问获取信息--Client端v1.0
更新内容: 1.添加entry栏默认ip和port口 2.修正退出功能 3.添加退出自动关闭窗口功能 4.优化cpu显示为固定保留两位小数 '''''''''''''''''''''''''''''' ...
- devexpress entity framework 与 asp.net mvc的坑
最近在做一个使用ASP.NET MVC DEVEXPRESS和EF的OA模块 遇到不少问题这里记录一下: 1 如果项目中存在多个上下文类(DBContext的派生类),在做数据迁移的时候需要在不同目录 ...