controller层和service层的代码
来源:8-9 商品编辑之前端实现
种苹果树的兔子
2020-12-06
学了这么久了,感觉自己敲代码时最纠结的就是controller层和service层,主体的逻辑倒是很清晰明了,但是对于判断哪些值为null,什么时候该抛出异常,什么时候打印错误信息,这些东西感觉十分混乱啊,自己写的时候很不知所措,请问这些东西有固定的规范吗?该如何学习这些东西?
以非空判断为例,这种是不是很随意啊,我实在没摸索出规律来,明明逻辑相似的代码,有时就加有时就不加,比如下面这两段代码:
一、获取店铺列表
@Override
public ShopExecution getShopList(Shop shopCondition, int pageIndex, int pageSize) {
//将页码转换成行码
int rowIndex = PageCalculator.calculateRowIndex(pageIndex, pageSize);
//依据查询条件,调用dao层返回相关的店铺列表
List<Shop> shopList = shopDao.queryShopList(shopCondition, rowIndex, pageSize);
//依据相同的查询条件,返回店铺总数
int count = shopDao.queryShopCount(shopCondition);
ShopExecution se = new ShopExecution();
if (shopList != null) {
se.setShopList(shopList);
se.setCount(count);
} else {
se.setState(ShopStateEnum.INNER_ERROR.getState());
}
return se;
}
二、获取商品列表
@Override
public ProductExecution getProductList(Product productCondition, int pageIndex, int pageSize) {
// 页码转换成数据库的行码,并调用dao层取回指定页码的商品列表
int rowIndex = PageCalculator.calculateRowIndex(pageIndex, pageSize);
List<Product> productList = productDao.queryProductList(productCondition, rowIndex, pageSize);
// 基于同样的查询条件返回该查询条件下的商品总数
int count = productDao.queryProductCount(productCondition);
ProductExecution pe = new ProductExecution();
pe.setProductList(productList);
pe.setCount(count);
return pe;
}
这种判断感觉controller层和service层都有,感觉整个代码都看着很混乱,请问老师有没有好的解决办法呢
写回答
1回答
-
同学好,可以尝试把判空逻辑收归到方法里面进行。然后判空这个事情,并不是说固定到某一层才做,我觉得就是做当层最了解的已知的输入,认为有判空的必要就可以加上,实际上对于大型项目来讲,由于不同层之间甚至还跨了不同服务,所以都需要判空呢,只要当前层的判空放到一处,我觉得是比较合理的。
012020-12-23
相似问题