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
;
}