估计看到这个标题,就要有人破口大喷了,这种浅显的问题还要问!肯定要返回值啊!!
咱们不说废话,直接提枪上阵,拿代码说事!!!
public Integer placeOrder(Order order){
//校验订单
checkOrder(order);
//保存订单的基本信息
saveOrder(order);
//更新用户的账户信息
updateUserAccount(order);
//添加用户额账户流水
addUserAccountLog(order);
//保存订单的流水日志
saveOrderLog(order);
//更新商家的商品数据
updateBusinessData(order);
//添加*****
****(order);
//反正是一堆杂七杂八,乱七八糟的业务逻辑
……
}
上面的代码的是java写的,咱们姑且就当它是一个用户做下单的业务操作吧
这个代码写的怎么样呢??
用我的话说: 注释合理!业务清晰!代码简洁!高可读性!
但是!这个代码它的更新操作是没有返回值的,或者说有返回值,但是没有对返回值做任何判断!
……
可是!为啥我就是喜欢这样的代码呢,哎真的是犯贱
不行,这样逻辑不严谨,咱们java是强类型语言,怎么能写出这么不严谨的代码呢。好吧我们修改一下
正确的代码应该是这样子滴!
public Integer placeOrder(Order order){
//校验订单
checkOrder(order);
//保存订单的基本信息
boolean saveOrder= saveOrder(order);
if(saveOrder){
//更新用户的账户信息
boolean updateUserAccount = updateUserAccount(order);
if(updateUserAccount){
//添加用户额账户流水
boolean addLog = addUserAccountLog(order);
if(addLog){
//保存订单的流水日志
boolean addLog1 = saveOrderLog(order);
if(addLog1){
//更新商家的商品数据
booelean *** = updateBusinessData(order);
if(****){
****
}else{
throw new Exception**
}
}else{
throw new Exception**
}
}else{
throw new Exception**
}
}else{
throw new Exception**
}
}else{
throw new Exception**
}
}
~~
嗯?怎么感觉好像和我想象中的不大一样啊???
我是谁? 我在哪?我在干什么???
不对啊,为啥要在调用方法后面抛异常呢,保存失败直接抛异常不就好了,反正在哪都是抛异常!
所以代码要改成这样子~
/**
* 保存订单基本信息
*/
public boolean saveOrder(Order order){
//此处省略一万行代码
…………
boolean bool = orderDao.insert(order);
if(!bool){
throw new Exception***
}
return bool;
}
这样的代码才叫好代码!
等等
……
咱貌似干了件非常SB的事情!
那还返回个毛线啊……
走起!!!
/**
* 保存订单基本信息
*/
public void saveOrder(Order order){
//此处省略一万行代码
…………
boolean bool = orderDao.insert(order);
if(!bool){
throw new Exception***
}
}
咦,好像Service还真的不需要返回值啊! 嘿嘿
说到底,Service就是一个功能,代码执行完就表示成功了,咱真没必要脱裤子放屁,硬给他塞一个执行成功的返回值。