java代码重构总结1

来源:互联网 发布:网络群发器 编辑:程序博客网 时间:2024/06/07 12:18

一、返回值优化处理(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)










原创粉丝点击