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回答

翔仔

2020-12-06

同学好,可以尝试把判空逻辑收归到方法里面进行。然后判空这个事情,并不是说固定到某一层才做,我觉得就是做当层最了解的已知的输入,认为有判空的必要就可以加上,实际上对于大型项目来讲,由于不同层之间甚至还跨了不同服务,所以都需要判空呢,只要当前层的判空放到一处,我觉得是比较合理的。

0
1
种苹果树的兔子
非常感谢!
2020-12-23
共1条回复

Java双版本(SSM到SpringBoot)校园商铺全栈开发

SSM商铺V1.0,解决毕设痛点;SpringBoot商铺V2.0,满足工作刚需

5113 学习 · 8144 问题

查看课程