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. 创建单实例,保证线程安全
public
static
DownFileManager
getInstance() {
if
(mInstance
==null
)
{
mInstance
=new
DownFileManager();
}
return
mInstance;
}
- 正确的做法是:
public
static
DownFileManager
getInstance() {
if
(mInstance
==null
)
{
synchronized
(DownFileManager.
class
)
{
if
(mInstance
==null
)
{
mInstance
=new
DownFileManager();
}
}
}
return
mInstance;
}
或
public
synchronized
static
DownFileManager
getInstance() {
if
(mInstance
==null
)
{
mInstance
=new
DownFileManager();
}
return
mInstance;
}
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方法来判断
public
static
boolean
floatEquals(
float
a,
float
b)
{
return
Math.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/ ...
随机推荐
- 浅谈ASP.NET配置文件加密
在刚刚完成的一个ASP.NET项目中,遇到了这么一个问题,项目部署到生产环境中时,领导要求项目中的配置文件(如web.config,app.config)中不能出现敏感字符,如:数据库连接,等等. 第 ...
- JUnit5 技术前瞻
更多原创测试技术文章同步更新到微信公众号 :三国测,敬请扫码关注个人的微信号,感谢! 原文链接:http://www.cnblogs.com/zishi/p/6868495.html JUnit ...
- 给php加速安装APC
说明:APC-3.1.13 适应于 php-5.4.27 下载: wget http://blog.xinfilm.com/softdir/APC-3.1.13.tgz tar -zxvf APC-3 ...
- JasperReport报表开发(一)--原理介绍
1. JasperReport介绍 JasperReport 是一个开源的Java报表引擎,它不像其他的报表工具,例如Crystal报表是基于Java的,没有自己的表达式语法.Jasper Repor ...
- CF154D. Flatland Fencing [博弈论 对称 平局]
传送门 题意: 背景是$knights' tournament$,好棒的样子! 这道题不一样很恶心的地方就是有平局的存在 首先判断能不能一步杀 不能的话,如果可以走$0$步或者$a,b$一负一正那么一 ...
- Vs Code JavaScript开发插件推荐
1 vscode-icons 使用效果 安装好后如何设置? Ctrl+Shift+P 然后输入theme 2 document this 如何使用? 在方法或者要注释的地方上 按 快捷键 Ctrl + ...
- 6.C++初步分析类
面向对象的意义在于: -将日常生活中习惯的思维方式引入程序设计中 -将需求中的慨念直观的映射到解决方案中 -以模块为中心构建可复用的软件系统 -提高软件产品的可维护性和可扩展性 其中类和对象是面向对象 ...
- 阿里云学习之IOT物联网套件(客户端与服务端的后台数据传输)
设备端代码(mqttClient):https://help.aliyun.com/document_detail/42648.html?spm=5176.doc30579.6.569.ZEgA1g ...
- 关于Git的版本问题
问题的起源 我在IDEA上不小心修改了文件(加了一行空行)并且被保存了,在GitHub Desktop桌面工具上可以看到changes中有修改记录,并且使用命令行git status也可以看到文件的修 ...
- 介绍一个轻量级iOS安全框架:SSKeyChain
SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码.账户进行访问,包括读取.删除和设置.SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes ...