Programming languages 在这里如何不使用GOTO函数

Programming languages 在这里如何不使用GOTO函数,programming-languages,goto,Programming Languages,Goto,我知道全球对goto逻辑的不满。。但它来了。在这种情况下,假设您有一个处于状态的函数,并决定要执行的操作。这是python中的伪代码(作为一个玩笑) 我的问题是,您将如何实现这些代码? 它需要易于阅读。如果以后您决定添加一个操作或添加一个状态或条件,您可以自信地这样做,因为它不会破坏早期的逻辑 在每个条件之后,您都会跳出条件并向下跳转到标签,因此只有一个条件可以运行 为了避免重复actionA代码并避免goto,您只需移动您的条件即可。如果状态==A或状态不是B(因为另一个块将运行),并且第三个

我知道全球对goto逻辑的不满。。但它来了。在这种情况下,假设您有一个处于状态的函数,并决定要执行的操作。这是python中的伪代码(作为一个玩笑)

我的问题是,您将如何实现这些代码?

它需要易于阅读。如果以后您决定添加一个操作或添加一个状态或条件,您可以自信地这样做,因为它不会破坏早期的逻辑

在每个条件之后,您都会跳出条件并向下跳转到标签,因此只有一个条件可以运行

为了避免重复actionA代码并避免goto,您只需移动您的条件即可。如果状态==A或状态不是B(因为另一个块将运行),并且第三个条件匹配,则dosthA将执行。注意保持我得到的行为:

def function(status, condition, value):
    if(status == A or (status != B && (value > 1 or condition == C))) :
        dosthA
        return
    if(status == B) :
        dosthB
        return
    ...more conditions you got the idea.
    return;
而且,这实际上是一堆“else-if”或一个开关,因为你回来了。使用“else-if”或switch可能会增加清晰度,但为了使更改最少,我没有将其转换为“else-if”


顺便说一下,我坚信使用goto是个坏主意。值得一读Edsger W.Dijkstra的影响力。

使用actionA函数并调用它而不是goto。是的,我想你是对的,但是goto在这里工作得很好,我不想仅仅为了避免使用goto关键字而更改函数。如果你的语言允许使用
开关(true)case status==a:…
,我会使用它。将案例分组并添加错误提示将使其更具可读性。
def function(status, condition, value):
    if(status == A or (status != B && (value > 1 or condition == C))) :
        dosthA
        return
    if(status == B) :
        dosthB
        return
    ...more conditions you got the idea.
    return;