代码该如何提高可读性

img

如何对这样的代码做优化,一个for循环加两个if,怎么样才能让代码看着好看一些呢,谢谢大家

多抽一些公共方法来调用,比如第二个if块中的代码就可以这样

你把代码复制出来一下,我帮你看看

 boolean isContainsPlanFlag = recordSet.contains(planFlag);
 boolean isNotRepay = repaymentPlan.getRepaymentStatus() == 0;
 boolean isGreaterInterest = recordMap.get(planFlag).compareTo(repaymentPlan.getExpectRepayInterest()) >= 0;
 if (isContainsPlanFlag && isNotRepay && isGreaterInterest) {
     plan.setId(repaymentPlan.getId());
     plan.setRepaymentStatus(1);
 } else if(!isContainsPlanFlag && !isNotRepay){
     plan.setId(repaymentPlan.getId());
     plan.setRepaymentStatus(0);
 } else {
     continue;
 }
 if (repaymentPlanMapper.updateRepaymentPlan(plan) != 1) {
     throw new ServiceException("更新还款计划状态失败");
 }

改成这样了,还有其他方法吗

【以下回答由 GPT 生成】

为了提高Java代码的可读性,可以采取以下几个方面的优化措施:

  1. 提取常量和变量名:将代码中出现的常量(如0和1)提取成有意义的变量,命名具有描述性的变量名,以增加代码的可读性。例如,可以将0和1分别提取成变量REPAYMENT_STATUS_PENDINGREPAYMENT_STATUS_COMPLETED来代替。
final int REPAYMENT_STATUS_PENDING = 0;
final int REPAYMENT_STATUS_COMPLETED = 1;
  1. 减少嵌套层级:通过使用早期退出的方式减少代码块的嵌套。在检查条件的时候,如果条件不满足,可以提前返回,减少多层嵌套。例如:
if (!recordSet.contains(planFlag)) {
    continue;
}

// 检查计划的还款利息是否小于等于真实还款利息,并且还款状态为0
if (recordMap.get(planFlag).compareTo(repaymentPlan.getExpectRepayInterest()) >= 0
    && repaymentPlan.getRepaymentStatus() == REPAYMENT_STATUS_PENDING) {
    // 更新还款计划状态
    updateRepaymentPlan(repaymentPlan, REPAYMENT_STATUS_COMPLETED);
} else {
    // 查还款状态是否为REPAYMENT_STATUS_COMPLETED
    if (repaymentPlan.getRepaymentStatus() == REPAYMENT_STATUS_COMPLETED) {
        // 更新还款计划状态
        updateRepaymentPlan(repaymentPlan, REPAYMENT_STATUS_PENDING);
    }
}
  1. 提取方法:将相同部分提取成独立的方法,以增加代码的可读性和复用性。例如,将更新还款计划状态的部分提取成一个独立的方法updateRepaymentPlan
private void updateRepaymentPlan(RepaymentPlan plan, int status) {
    plan.setId(plan.getId());
    plan.setRepaymentStatus(status);

    if (repaymentPlanMapper.updateRepaymentPlan(plan) != 1) {
        throw new ServiceException("更新还款计划状态失败");
    }
}

通过以上的优化措施,可以使代码更加易读、易懂和美观。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^