多层嵌套 if-else 代码优化重构的几种方案

本文探讨了如何优化多层嵌套if-else的代码,提出了三目运算符、方法分层和多态等重构策略。通过实例展示了如何使用这些方法,以提高代码可读性和维护性,降低未来需求变更带来的维护成本。
摘要由CSDN通过智能技术生成

相信大伙儿都见过这样的代码:

 if (true) {
   
    // do something
        if (true) {
   
            // do something
            if (true) {
   
                // do something
                if (true) {
   
                    // do something
                    if (true) {
   
                        // do something
                    }
                }
            }
        }
    }

功能跑起来没问题,但是作为一名追求代码精简的程序员,能用一行代码完成功能绝不写三行。业务开发过程中正好也遇到这样的重构诉求,于是有了这篇重构过程复现和衍生思考博客。

结论先行,重构这类嵌套if-else的代码,我主要采取了以下三种方式:

  1. 三目运算符
  2. 方法分层
  3. 多态

2.优化思路

下面我将以实例的方式呈现这个重构过程。

重构前的业务代码是长这样的:
在这里插入图片描述
2.1.三目运算符
利用三目运算符对一些简单if-else进行优化。

就像这样:

不使用三目运算符:

if (queryParam.getCreateStartTime() != 0) {
   
String strStartDate = DateUtils.longToFormatDate(queryParam.getCreateStartTime());
}

使用三目运算符:

String strStartDate = !(queryParam.getCreateStartTime() == 0 || queryParam.getCreateEndTime() == 0) ? DateUtils.longToFormatDate(queryParam.getCreateStartTime()) : null;
2.2.方法分层

所谓方法分层是受到设计模式里面的单一职责原则(SRP)启发,代码中很多参数需要判空。这时候抽象一个方法出来进行所有的参数合法性校验,以此达到代码简化的目的。

业务代码只进行业务逻辑编写,参数校验统一由参数校验方法完成。

就像这样:

@Override
public void checkListQueryParams(ListQueryParam queryParam) {
   
    if (Objects.isNull(queryParam.getPageNo()) || Objects.isNull(queryParam.getPageSize())) {
   
        throw new 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值