关于非空判断
来源:14-7 店铺授权之service层编码及最终效果展示
种苹果树的兔子
2020-12-23
感觉非空判断好像没有一套严格的规范,很多时候都忘了做,或者感觉很多地方完全没必要做
比如,下面这两个service层方法:
(1)为什么第一个方法不用对shopAuthId做非空判断,而第二个需要做非空判断,请问老师您判断的依据是什么,我们在写service层之前只写了dao层,所以是根据dao层来判断吗?还是根据具体的业务功能实现来决定?
(2)这里如果不做非空判断有可能会出现什么样的问题呢?以第二个方法为例,我是这么考虑的:这里调用的是dao层的updateShopAuthMap()方法,参数是shopAuthId,对应的数据库表的shop_auth_id列,这个列是必须非空的,如果传入空值的话会报错。如果按照这样理解的话,那么第一个方法也应该进行非空判断吧,所以这里很困惑,希望老师能够指点一下
@Override
public ShopAuthMap getShopAuthMapById(Long shopAuthId) {
return shopAuthMapDao.queryShopAuthMapById(shopAuthId);
}
@Override
public ShopAuthMapExecution modifyShopAuthMap(ShopAuthMap shopAuthMap) throws ShopAuthMapOperationException {
// 空值判断,主要是对授权Id做校验
if (shopAuthMap == null || shopAuthMap.getShopAuthId() == null) {
return new ShopAuthMapExecution(ShopAuthMapStateEnum.NULL_SHOPAUTH_ID);
} else {
try {
shopAuthMap.setLastEditTime(new Date());
int effectedNum = shopAuthMapDao.updateShopAuthMap(shopAuthMap);
if (effectedNum <= 0) {
return new ShopAuthMapExecution(ShopAuthMapStateEnum.INNER_ERROR);
} else {// 创建成功
return new ShopAuthMapExecution(ShopAuthMapStateEnum.SUCCESS, shopAuthMap);
}
} catch (Exception e) {
throw new ShopAuthMapOperationException("modifyShopAuthMap error: " + e.getMessage());
}
}
}
写回答
1回答
-
同学好,一般如果考虑把某一层单独提炼出来给第三方调用的话,就需要对必要的参数做判空校验,而必要的参数主要是由业务来确定的,再者就是那些如果为空就会导致程序出错的,得依据实际情况确定。第一个其实也应该判空,不然如果传入null就有可能会报错,第二个因为AuthId是必须的,所以肯定需要判空的
122020-12-26
相似问题