一、返回值优化处理(1)
待优化代码如下:
ResultData resultData = ResultDataUtil.errorResult(RetInfoConstants.QUERY_USER_REPAYMENT_RECORD_EXC); //初始化有异常的赋值
try {
if(假设成立){
resultData = ResultDataUtil.errorResult("返回错误resultData"); // 假设该段逻辑含有返回值,但是没有返回,所以下面的返回值会覆盖掉该返回值,造成预期结果不一致
}
resultData = RepPlanService.me.getRepaymentTake(xxxx); // 没有异常的赋值
} catch (Exception e) {
logger.error("xxxxxxxxxx", e);
ExceptionLogService.me.saveException(xxxxxxx, "xxxx", e.getMessage());
}
return resultData;
优化后代码如下:
try {
if(条件){
return ResultDataUtil.errorResult("返回错误resultData"); // 返回错误的resultData
}
return RepPlanService.me.getRepaymentTake(xxxx); // 返回正常的resultData
} catch (Exception e) {
logger.error("xxxxxxxxxx", e);
ExceptionLogService.me.saveException(xxxxxxx, "xxxx", e.getMessage());
return ResultDataUtil.errorResult(RetInfoConstants.QUERY_USER_REPAYMENT_RECORD_EXC); // 返回异常的resultData
}
优化说明:resultData为返回值;① resultData尽量不需要初始化,赋值操作应该让需要赋值的地方进行赋值。好处:逻辑清晰,IDE能够检测到分支是否都赋值完成。
二、返回值优化处理(2)
待优化代码如下:
ResultData resultData = null;
try {
if(a == 1){
resultData = ResultDataUtil.errorResult("xxx"); // 返回错误的resultData
}else{
resultData = ResultDataUtil.successResult("xxx"); // 返回正常的resultData
}
} catch (Exception e) {
resultData = ResultDataUtil.errorResult("xxxxx");
}
return resultData;
优化后代码如下:
ResultData resultData;
try {
if(a == 1){
resultData = ResultDataUtil.errorResult("xxx"); // 返回错误的resultData
}else{
resultData = ResultDataUtil.successResult("xxx"); // 返回正常的resultData
}
} catch (Exception e) {
resultData = ResultDataUtil.errorResult("xxxxx");
}
return resultData;
优化说明:resultData不需要赋初始值,尽量依赖IDE去检查是否有返回,没有IDE将会在编译之前报错,有利于检查各个分支是否有有赋相应的值
三、if else优化
(1) if else尽量少嵌套
待优化代码如下:
if (null != vo) {
amount = vo.getAdvanceBalance();
if(amount != null && amount.compareTo(zero) > 0){
return this.doSomeThing(appId, loanOrder.getBusCode(), amount, certId, mobile, customerId);
}else{
return ResultDataUtil.result(RetInfoConstants.RET_CODE_4001, RetInfoConstants.APPLYPAY_BUSAMT_LESS_ZERO_MAG);
}
} else {
return ResultDataUtil.result(RetInfoConstants.RET_CODE_4000, RetInfoConstants.APPLYPAY_BUSAMT_EXC_MAG);
}
优化后的代码如下:
if (null != vo) {
amount = vo.getAdvanceBalance();
if(amount != null && amount.compareTo(zero) > 0){
return this.doEarlyRepay(appId, loanOrder.getBusCode(), amount, certId, mobile, customerId);
}
return ResultDataUtil.result(RetInfoConstants.RET_CODE_4001, RetInfoConstants.APPLYPAY_BUSAMT_LESS_ZERO_MAG);
}
return ResultDataUtil.result(RetInfoConstants.RET_CODE_4000, RetInfoConstants.APPLYPAY_BUSAMT_EXC_MAG);
优化说明:去除不必要的else
四、model设值尽量使用构造函数完成设值
待优化的代码如下:
public OrderRecord setOrderRecord(){
OrderRecord orderRecord = new OrderRecord();
orderRecord.setRepayStatus(order.getRepayStatus());
orderRecord.setAppId(SignUtil.getStrId(order.getAppId()));
orderRecord.setProductName(order.getProductName());
orderRecord.setAppStatus(order.getAppStatus());
.....
}
优化后代码如下:
new OrderRecord(repayStatus, appId, productName,
appStatus, null, null, null,
null, null, null, null,null,null)