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

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

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

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

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

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 9
 if(a && b && c){

 } else {
     // d
 }

这样子?

5年前 评论
任飘渺

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

5年前 评论
 if(a){
        if(b){
             if(c){
               return ;
              }
           return ;
         }
         return ;
    }
     // d
    return ;
5年前 评论
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;
5年前 评论
largezhou 5年前
Caral (作者) 5年前
ab0029 5年前
任飘渺 (楼主) 5年前
largezhou 5年前
半人间 5年前
panda-sir 5年前
no_pain 3年前
Epona

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

5年前 评论
if (a) {
    # code...
}

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

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

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

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

5年前 评论
no_pain 3年前
sanders

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

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

if (! b) {
    return;
}

if (! c) {
    return;
}

// ...
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!