目前需要写一个判断完整度的方法
A实体类共有20个字段,其中12个字段参与计算,计作:a1到a12
B实体类共有16个字段,其中8个字段参与计算,计作:b1到b8
C实体类共有19个字段,其中10个字段参与计算,计作:c1到c10
所有30个字段都不为空才算完整
目前的判断语句为:
if (!StringUtils.isEmpty(a1) && ...
&& !StringUtils.isEmpty(c10)){
return true;
}
目前的代码很长,是否可以简单优化?为什要那样优化?
看题主的问题,虽然直接每个对象每个字段都去get判空是可以,但是这样的代码明显不方便维护,而且可能越加越多,因此我分析主要需要解决以下两个问题
针对这两个问题,我认为
这就有了一下的代码:
首先是标注的注解
EmptyCheck
然后注解到一个实体类A中的字段里,其中
a1,a3
字段需要判空,a2
字段不需要以上是准备工作,接下来就是写如何校验了,我采用了一个校验类
EmptyCheckUtils
,把所有校验方法放到里面了既然是对于A,B之类的实体类对象进行校验,那第一个提供的方法,就是针对所有的实体类对象进行的校验
isAllNotEmpty
,判断所有对象的所有有EmptyCheck标注的字段值是否都不为空接下来就是单个对象的判断方法
isNotEmpty
最后就是其他的辅助方法了
测试类:
运行结果
结果可以看到,由于是
a2
属性不需要判空,所有只有等a3
设置完值后,判断结果才会为true
最后说明:为了方便展示,才将业务校验类
EmptyCheckUtils
中填充了很多和业务无关的校验方法,因此辅助方法中除了和业务有关的isObjectNotEmpty
方法,其他的getValue
,isEmptyCheckField
和getAllField
等方法建议拆分到其他工具类中,保持业务方法类和其他辅助工具方法类的健壮稳定性哈