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/ ...
随机推荐
- 准备:新V8即将到来,Node.js的性能正在改变
V8的Turbofan的性能特点将如何对我们优化的方式产生影响 审阅:来自V8团队的Franziska Hinkelmann和Benedikt Meurer. **更新:Node.js 8.3.0已经 ...
- 图像映射<map>、<area>
1.<map>定义图像映射,图像映射(image-map)指带有可单击区域的一幅图像. 2.<area>定义图像映射中的区域,area元素永远嵌套在map元素内部,area元素 ...
- Codeforces B. Divisiblity of Differences
B. Divisiblity of Differences time limit per test 1 second memory limit per test 512 megabytes input ...
- softmax_cross_entropy_with_logits
softmax_cross_entropy_with_logits 原创文章,请勿转载 函数定义 def softmax_cross_entropy_with_logits(_sentinel=Non ...
- zalenium 应用
zalenium是一个Selenium Grid扩展,用Docker容器动态扩展你的本地网格.它使用docker-selenium在本地运行Firefox和Chrome中的测试,如果需要不同的浏览器, ...
- 夏令营讲课内容整理 Day 2.
本日主要内容是并查集和堆. 并查集 并查集是一种树型的数据结构,通常用来处理不同集合间的元素之间的合并与查找问题.一个并查集支持三个基本功能:合并.查找和判断.举一个通俗的例子,我和lhz认识,lhz ...
- POJ 1755 Triathlon [半平面交 线性规划]
Triathlon Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6912 Accepted: 1790 Descrip ...
- python进行各类API的使用
前言: 献上歌曲一首: 因为快要上学了,昨天晚上熬夜.然后今天早上起床 没有什么精神.吃完午饭后开始思考今天写什么好呢 然后逛着逛着逛到了一个API网站.感觉还不错就爬了 0x01: 环境:windo ...
- xBIM WeXplorer xViewer 基本应用
目录 基础 xBIM WeXplorer 简要介绍 xBIM WeXplorer xViewer 基本应用 xBIM WeXplorer xViewer 浏览器检查 xBIM WeXplorer xV ...
- Oleans集群之Consul再解释
Oleans集群之Consul再解释 这是Orleans系列文章中的一篇.首篇文章在此 由于上周发文章的时候,我正要打算出门,所以就把写好的全部发出去了,有点仓促,虽然写了主线,但是这里还是需要再次解 ...