减少if-else使用

删除 else

如:

function test($arg)
{
    if($arg == 'foobar'){
        return true;
    }else{
        return false;
    }
}

尽量写成这样

function test($arg)
{
    if($arg == 'foobar'){
        return true;
    }

    return false;
}
 
优先将代码量少,可使流程中断的代码块(return, throw excetion, continue ...)放到 if 中, 提前中断代码。
 
 

罗列规则式的写代码

多层 if 嵌套的语法,把他写成线性的,就像写规则一样将其一条条罗列出来

如:

function match($age, $salary, $pretty){
    if($age > 18){
         // do some thing A;
        if($salary > 5000){
            // do some thing B;
            if($pretty == true){
                return true;
            }
        }
    }

    return false;
}

改写成这样是不是清晰多了?

function match($age, $salary, $pretty){
    if($age < 18){
        return false;
    }

    // do some thing A;

    if($salary < 5000){
        return false;
    }

    // do some thing B;

    return $pretty == true;
}

 
function contry_initial($country){
    if ($country==="China" ){
       return "CHN";
    }else if($country==="America"){
       return "USA";
    }else if($country==="Japna"){
      return "JPN";
    }else{
       return "OTHER";
    }
}

这样的if语句,可以看到值和返回是一一对应的,所以你可以这样写

function contry_initial($country){
  $countryList=[
      "China"=> "CHN",
      "America"=> "USA",
      "Japna"=> "JPN",
    ];

    if(in_array($country, array_keys($countryList))) {
        return $countryList[$country];
    }
    return "Other";

}

如果需要更加自由的定义映射表的话,可以这样写

function contry_initial($country, array $countryList){
    if(in_array($country, array_keys($countryList))) {
        return $countryList[$country];
    }
    return "Other";
}

完全去掉if语句可以写成

function contry_initial($country, array $countryList){
    return in_array($country, array_keys($countryList))?$countryList[$country]:"Other";
}

 
 
https://laravel-china.org/topics/1284/if-else-reconstruction-experience
https://laravel-china.org/topics/1263/tips-to-make-your-if-else-look-more-beautiful
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在中,可以通过一些技巧和设计模式来减少使用过多的 if-else 语句。以下是一些常用的方法: 1. 使用多态:将条件逻辑转化为对象之间的关系。通过将不同的条件分支封装为不同的类,并使用共同的接口或基类进行引用,可以避免大量的 if-else 语句。 2. 使用策略模式:将不同的条件逻辑封装为不同的策略类,并将其作为参数传递给调用方。调用方根据需要选择合适的策略,从而避免使用复杂的 if-else 语句。 3. 使用工厂模式:通过工厂方法或抽象工厂来创建对象,根据条件返回不同的具体对象。这样可以避免在代码中使用大量的 if-else 条件判断。 4. 使用映射表:将条件与处理逻辑映射为键值对,在需要处理时根据条件从映射表中获取对应的处理逻辑。这种方式可以将条件判断转移到配置文件中,使得代码更加清晰和可维护。 5. 使用状态模式:将对象的行为封装为不同的状态类,并在不同状态下执行相应的操作。通过切换对象的状态,可以避免使用复杂的 if-else 语句。 6. 使用链式调用:将多个条件判断通过链式调用的方式连接起来,使得代码更加简洁和易读。可以使用类似于流式API的方式来实现。 以上是一些常见的方法来减少 if-else 使用的技巧和设计模式。根据具体的场景和需求,选择适合的方法可以使代码更加简洁、可扩展和易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值