我很好奇是否应该在编码时避免使用Exit Sub, Exit Function
等等?我在不同的地方读到这是一种不好的做法,如果可能的话,你应该避免它。
我在下面提供了一个函数来演示我的意思:
Function Test()
Dim X As Integer
X = 5
If X = 10 Then
Test = True
Exit Function
Else
Test = False
Exit Function
End If
End Function
在上面的情况中,
Exit Function
并不是必需的,因为整个代码将能够完成整个例程而不会出现问题。但是通过添加它会导致一些问题吗?
答案 0 :(得分:2)
您使用的样式来自VB5和VBA时代,它不支持Return
语句,我们需要将返回值直接分配给函数名称。在VB.NET中,您应始终使用Return
赋值。 Return
将在一个语句中执行赋值和退出调用。
关于您的特定示例,我的印象是Exit Function
语句只是对最近的GoTo
行End Function
执行操作。因此,在您的情况下这些语句是多余的,可能会被编译器条带化(不确定这个)。
请注意,Exit
语句从代码可读性的角度来看变成了一场噩梦。我最近成了这个特殊问题的受害者。 Visual Basic是一种冗长的语言,读者不会注意到Exit
语句。结构化If/Else
块更易读。
答案 1 :(得分:1)
这取决于代码的当前上下文。如果你在一个区块内(是一个循环,Sub或函数等)并且试图离开,Exit Statement将会很好。
Return Statement也可以与Exit Function
或Exit Sub
相同,请参阅this SO question的答案。但是当我希望将控制权返回给调用代码时,我个人更喜欢函数中的exit语句,但没有值返回。
答案 2 :(得分:1)
几乎在每种情况下,都有一种“更好”的方法,而不是使用setTimeout
。
以下示例将给出相同的结果,但更短,并且在我看来更清楚。
Exit Function
答案 3 :(得分:0)
要澄清一点,正如@dotNET所说。这是pre .net代码。在dot net中,您可以将代码稍微更改为
Function Test() As Boolean
Dim X As Integer
X = 5
If X = 10 Then
Return True
Else
Return False
End If
End Function
这将test
定义为返回布尔结果的函数,并使用Return
语句来错误...将结果返回给调用语句并立即退出上述{{ 1}}陈述
例如..
Return