我在另一个论坛上发布了一个代码片段,要求帮助,人们向我指出,使用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.
原文链接:https://www.f2er.com/vb/255168.html一般来说,几乎总是比使用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代码看看,那么有人首先接近你的代码呢? “嗯..重试?这是做什么的?什么时候发生?哦,所以我们去那个标签,如果一天超出范围,好的,所以我们想循环,直到日期被认为是有效的,在范围内” .
而如果你看我的:
“哦,我们要继续这样做,直到它有效,当日期在范围内时才有效.”