代码整洁之道,评审问题分享记录
1. 代码评审的成长
大家好,我是方圆
。最近针对近半年的代码评审做了一次总结分享,主要是一些很简单的问题及代码优化注意事项。
2. 详细问题及注意事项
2.1 Integer, Long, String 类型要使用equals来判断相等
为什么Integer
和Long
多数情况下用==
比较结果也正确呢?
int
和Integer
类型比较,都为true,因为会把Integer拆箱后再去比- 两个
非new
出来的Integer(eg: Integer a = 5
),使用==
比较且大小在-128 ~ 127之间,则为true,否则为false。
这个范围可以使用-XX:AutoBoxCacheMax=?
来进行调整 - 两个Integer进行比较,
其中一个是new出来的
,==
比较的话为false,因为==比较在对引用类型比较时比较的是存放在堆中的地址值
2.2 加密异常需要抛出来
这种情况下如果加密出现异常被catch住之后,它还会让代码继续向下执行,所以应该在catch块中把异常抛出来
2.3 double类型加减运算精度丢失问题
这个是老生常谈的问题,在《Effective Java》这本书中有过关于浮点数计算的提醒:浮点数不用于精确计算,可用在实验室取近似值,所以在代码中进行小数运算要使用BigDecimal
2.4 count(字段)替换为count(0)
如果想在字段值为null的时候同样也计数,需要使用count(0),count(字段)当字段为null时不计数
2.5 事务注解需要加上rollbackFor
如果不加的话,只针对RuntimeException
回滚
3. 代码优化
3.1 通用方法复用
例子中是计算两个时间间隔天数的逻辑,这种通用方法需要加到工具类中复用
3.2 操作资源用try-with-resources资源
3.3 SQL 条件字段不要加函数
否则会使索引失效
3.4 代码注释和方法拆分复用
- 代码注释描述清晰,其他小方法进行拆分,尽可能复用代码使逻辑清晰
“That’s all”