项目场景:
今天一个其他组的副组长审计代码,查到说用size判断对吗?你这个peopleRooms一定不为空吗?不得用CollectionUtils判断? 对我发出了灵魂拷问. 我们先分析一下 代码如下
代码分析:
1.首先Mybatis-Plus查询出来的list集合不可能为NULL,具体源码大家感兴趣的可以去搜索,简单来讲就是查询之前会先创建一个空的list集合,然后把你查询出来的数据添加进集合里,如果数据为空那会就返回空的集合.所以根据此依据我们总结出 这个集合不可能存在为NULL的情况
2.我们接下来看CollectionUtils.isEmpty()的判空方法,它会判断集合是否为NULL,这个在第一点的时候我们已经论述过了或者collection.isEmpty(),接下来我们点进去看这个方法
然后发现是个接口,我们接下来去看ArrayList的实现方法
然后我们就发现这个实现类是返回了一个size==0的判断
结果总结:
根据代码分析的1和2总和来看:
1. 首先这个集合不可能为null
2.CollectionUtils.isEmpty() 判断的是是否为null 和是否size==0
那结合1、2点来看我们其实判断这个peopleRooms.size == 0 是一点问题都没有的,因为CollectionUtils.isEmpty() 的判断这个集合是否为NULL我们根本不需要因为它不可能为空剩下的就是在判断size是否为0而已,你可以说我写的不规范但是从逻辑上来说这样写一点问题没有
感悟:
经过此事件,我深深的感受到了以后大家对自己的代码一定有个自己的认知对咱们常用的方法和一些框架增加一些熟悉度,而且有问题一定要去自己探究不一定人家说的就一定是对的我们要有探究精神, 希望大家可以通过阅读源码增强自己对知识的掌握和对自己的自信,不要轻易听信别人的话来否定自己的