首先,我知道使用Goto
永遠不是一個好主意。但是我很難看到以下結構之間的區別......它們都按順序處理條件,當它們找到真值時停止處理,然後將控制返回到代碼中的指定位置(下一行,作爲這就是這個特定的「GoTo」目標所在)。是什麼區別:與轉到GoTo,使用Select和使用單獨的函數有什麼區別?
IFS:
If ConditionA then 'This is designed to skip the evaluation of condition B if condition A is met.
Do something
Goto Resume
End If
If ConditionB then
Do something
Goto Resume
End If
Resume:
選擇案例:
Select ConditionIsTrue 'This will also skip the evaluation of B if A is true.
Case A
Do something
Case B
Do something
End select
獨立的子:
EvaluateConditions(condition)
Sub EvaluateConditions(condition)
If A then
DoSomething
Exit Sub
End If
If B then
DoSomething
Exit Sub
End If
End Sub
我認爲GOTO的不良遺產最好能夠與通常伴隨它的舊的原始BASIC行號一同考慮,這導致當天很多非常難以遵循的代碼。 –
因此,出現一系列GoTos會帶來更多問題,這些GoTos會將所有代碼都帶到您的手中,而不是將它用作「如果您找到了真正的價值時跳過下一個位置」的方向? – nwhaught
我當然認爲至少有一個有效的觀點。我確實認爲,即使在這種情況下,GOTO可能被認爲是一種「代碼味道」,這意味着有機會重新設計代碼塊,使行爲更加流暢/不言而喻,即使只是視覺上。它不需要太多的GOTO就可以開始游泳 - 然後再次,太多的Javascript回調可以做同樣的事情:) –