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

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

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

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

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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 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年前
no_pain 2年前
Epona

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

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

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

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

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

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

4年前 评论
no_pain 2年前
sanders

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

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

if (! b) {
    return;
}

if (! c) {
    return;
}

// ...
4年前 评论

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