我知道全球对goto逻辑的怨恨......但是在这里。在这种情况下,假设您有一个功能处于状态并决定您将采取的操作。这是python中的伪代码(作为一个笑话。)
def function(status, condition, value):
if(status == A) :
goto actionA
if(status == B) :
goto actionB
if(value > 1 or condition == C):
goto actionA
...more conditions you got the idea.
return;
actionA:
dosthA
return
actionB:
dosthB
return
...more actions
我的问题是,您将如何实施此类代码? 它需要易于阅读。如果您稍后决定添加操作或添加状态或条件,则可以放心地执行该操作,以免它破坏先前的逻辑。
答案 0 :(得分:1)
在每个条件之后,您跳出条件并下到标签,因此只能运行其中一个。
为了避免重复actionA代码并避免goto,您可以移动条件。如果status == 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;
自从你回来以后,这实际上是一堆“别的if”或开关。使用“else if”或switch可能会增加清晰度,但为了使变化最少,说明答案的实际重要部分我没有把它变成“else if”。
顺便说一句,我坚信使用goto是一个坏主意。值得一读Edsger W. Dijkstra的有影响力的Go To Statement Considered Harmful。