我在另一个论坛上发布了一个代码片段寻求帮助,人们向我指出使用GoTo
语句是非常糟糕的编程习惯。我想知道:为什么会不好呢?
有什么替代方案GoTo
在 VB.NET 中是否可以使用通常被认为是更好的实践?
考虑下面的这个片段,用户必须输入他们的出生日期。如果月/日/年无效或不切实际,我想返回并再次询问用户。 (我正在使用 if 语句来检查整数的大小...如果有更好的方法来执行此操作,如果您也能告诉我,我将不胜感激:D)
retryday:
Console.WriteLine("Please enter the day you were born : ")
day = Console.ReadLine
If day > 31 Or day < 1 Then
Console.WriteLine("Please enter a valid day")
GoTo retryday
End If
我要与其他人不同的是,GOTO 本身并不都是邪恶的。罪恶来自于对 GOTO 的滥用。
一般来说,几乎总是有比使用 GOTO 更好的解决方案,但有时 GOTO 确实是正确的方法。
话虽这么说,你是一个初学者,所以在接下来的几年里,你不应该被允许判断 GOTO 是否正确(因为它几乎从来没有正确过)。
我会这样写你的代码(我的VB有点生疏了......):
Dim valid As Boolean = False
While Not valid
Console.WriteLine("Please enter the day you were born: ")
Dim day As String
day = Console.ReadLine
If day > 31 Or day < 1 Then
Console.WriteLine("Please enter a valid day.")
Else
valid = True
End If
End While
如果您查看 GOTO 代码并查看它,人们首先会如何处理您的代码? “嗯..重试日?这有什么作用?什么时候发生?哦,所以如果日期超出范围,我们就转到该标签。好的,所以我们要循环,直到日期被认为是有效且在范围内” 。
而如果你看看我的:
“哦,我们想继续这样做直到它有效。当日期在范围内时它是有效的。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)