请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

controller层和service层的代码

学了这么久了,感觉自己敲代码时最纠结的就是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回答

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

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号