有什么好的办法处理流程控制的程序块

最近遇到了一个问题,当写if条件时通常2个程序块需要处理不同的程序,但由于当流程控制过多的时候需不太好处理了,请问大家是如何处理的(前提条件是 面向过程编写,不能定义函数)
例子:

if(a)
{
    if(b)
    {
        if(c)
        {

        }else{
            // d
        }
    }else{
        // d
    }
}else{
    // d
}

以上是一个简单的例子 ,可以看到写d写了多次

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9
 if(a && b && c){

 } else {
     // d
 }

这样子?

4个月前 评论

abc的每个程序块都是独立的,如果是这样的话当a 条件满足, b条件不满足, c条件满足这样就没法处理了

4个月前 评论
 if(a){
        if(b){
             if(c){
               return ;
              }
           return ;
         }
         return ;
    }
     // d
    return ;
4个月前 评论
if(!a) goto d;
if(a && !b) goto d;
if(a && b && !c) goto d;
if(a && b && c) goto e;

d:XXX;
e:XXXX;
4个月前 评论
largezhou 4个月前
Caral (作者) 4个月前
ab0029 4个月前
阿贾克斯 (楼主) 4个月前
largezhou 4个月前
半人间 4个月前
panda-sir 4个月前
Epona

提前 return 和 @早起的虫子 做法类似吧

4个月前 评论
if (a) {
    # code...
}

if (a && b ) {
    # code...
}

if (a && b && c) {
    # code...
}

if (....) {
    # code...
}

我个人比较喜欢这样子写
相对来说 思路比较清晰点...

4个月前 评论
sanders

基本上优化“锯齿形代码”的方式就是用函数封装,既然不能用函数封装,不知道你这里使用闭包算不算另一种作弊的方案?

4个月前 评论
  1. 将条件反转, 异常情况先退出, 正常情况维持主干
  2. 将if else内的代码封装成公共函数
  3. 合并相同的条件表达式
4个月前 评论
if (! a) {
    return;
}

if (! b) {
    return;
}

if (! c) {
    return;
}

// ...
4个月前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!