java编程中if else多层嵌套的优化

本文探讨了Java编程中if-else多层嵌套的问题,通过重构示例代码,显著减少了嵌套层数,提高了代码的可读性和维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java编程中if else多层嵌套的优化

if else作为java编程语言不可或缺的条件语句,我们在编码过程中会大量的用到。但if else一般不建议嵌套超过三层,如果一段代码存在过多的if else嵌套,代码的可读性就会急速下降,后期维护难度也大大提高。所以,程序员在编码过程中都应该尽量避免过多的if else嵌套。那怎样可以减少if else条件语句的嵌套?下面我们一起来聊聊

 @Override
    public Result occUdhDupliCheck(UdhMissionApply udhMissionApply) {
        /**
         * 一、查询相同身份证号(查询状态不包括【自动完结】和【取消】和【待发起】并且创建人不是自己)
         * 1.没有相同:
         * {
         * (1)查房产证号是否相同
         * 《1》有相同:判断对应授信申请是否为空
         * -------<1>为空:不允许发起下户(说明在7天保护期内)
         * -------<2>不为空:查看授信发起日期,如果发起如果发起时间小于7天可下户申请,否则不允许发起下户申请(说明在7天保护期内)。
         * 《2》没有相同:可以下户
         * }
         *2.有相同:{
         *    直接判断对应授信申请是否为空
         *   -------<1>为空:不允许发起下户(说明在7天保护期内)
         *   -------<2>不为空:查看授信发起日期,如果发起如果发起时间小于7天可下户申请,否则不允许发起下户申请(说明在7天保护期内)。
         *}
         **/

        //查询相同身份证号
        List<UdhMissionApply> udhMissionApplyList = udhMissionApplyExtMapper.selectByCerNoSelfAndUnderHouseStatus(udhMissionApply.getCertNoSelf(),udhMissionApply.getCreateUser());
        //判断有相同身份证号
        if (udhMissionApplyList == null || udhMissionApplyList.size() == 0) {
            //没有相同身份证的情况,查询相同房产证
            udhMissionApplyList = udhMissionApplyExtMapper.selectByHousePropCertificateAndUnderHouseStatus(udhMissionApply.getHousePropCertificate(),udhMissionApply.getCreateUser());
            //身份证和房产证都不存在的情况可以提交下户申请
            if (udhMissionApplyList == null || udhMissionApplyList.size() == 0){
                return Result.success();
            }
        }

        //有相同身份证或者有相同身份证并且有相同房产证时,判断授信申请
        if (this.method(udhMissionApplyList)){
            return Result.success();
        }else {
            return Result.fail("下户申请失败");
        }
    }

    /**
     * 下户撞单对授信申请的验证,是否超过有效期
     * @param
     * @return
     */
    private boolean method(List<UdhMissionApply> udhMissionApplyList) {
        for (UdhMissionApply missionApply : udhMissionApplyList) {
            //获取对应的授信数据
            LmtGrtApply lmtGrtApply = lmtGrtApplyExtMapper.selectByUnderhouseNum(missionApply.getUnderhouseNum());
            if (ObjectUtils.isEmpty(lmtGrtApply)) {
                //如果授信申请为空,则授信申请正在进行中,不能进行下户申请,
                return false;
            }
            //如果授信申请不为为空,获取授信申请开始时间
            String startTime = lmtGrtApply.getCreateTime();
            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
            LocalDateTime dateTime = LocalDateTime.parse(startTime, formatter);
            //算出现在与授信申请开始的时间差是否超过有效期天数
            Duration duration = Duration.between(dateTime, LocalDateTime.now());
            long days = duration.toDays();
            String day = configExtMapper.selectValidParamValueByParamCode(CommConstant.MAXIMUM_LENGTH_OF_CREDIT_EXTENSION_APPLICATION);
            //小于有效期,不能下户申请
            if (days <= Integer.parseInt(day)) {
                return false;
            }
            //当授信时间超过有效期,判断授信状态是否还在授信审批,如果还在授信审批,可以进行下户申请,否则不可以
            if (! (DictConstant.LMT_GRT_STATUS_1).equals(lmtGrtApply.getApproveStatus())) {
                return false;
            }
        }
        return true;
    }

根据代码注释肯定有很多if嵌套,通过修改就少了很多if嵌套,让代码可读性提高不少。
一般在代码中出现if语句大多都是if控制判断、业务判断、状态判断。大多业务都离不开这几个判断,从而导致向我这样的小白在编程过程中出现很多if嵌套。怎样解决这个问题就要看具体的业务逻辑修改,至少让自己一个月后能够很快明白这个业务做了什么。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值