为了账号安全,请及时绑定邮箱和手机立即绑定

使用“ goto”语句不好吗?

使用“ goto”语句不好吗?

九州编程 2019-09-26 10:27:52
在研究了如何突破次级循环之后while (true) { // Main Loop    for (int I = 0; I < 15; I++) { // Secondary loop        // Do Something        break; // Break main loop?    }}大多数人建议调用“ goto”功能, 如以下示例所示:while (true) { // Main Loop    for (int I = 0; I < 15; I++) { // Secondary Loop        // Do Something        goto ContinueOn; // Breaks the main loop    }}ContinueOn:然而; 我经常听到'goto'声明是不好的做法。下图完美地说明了我的观点:所以goto语句实际上有多糟糕,为什么?有没有比使用“ goto”语句更有效的方法来打破主循环?
查看完整描述

3 回答

?
Helenr

TA贡献1780条经验 获得超3个赞

编辑:

goto语句实际上有多糟糕,为什么?

这取决于实际情况。我不记得任何时候我发现它使代码比重构更易读。这也取决于您对可读性的个人看法-从其他答案中可以明显看出,有些人比其他人更不喜欢它。(有意思的是,它在生成的代码中得到了广泛的使用-C#5中的所有异步/等待代码实际上都是基于很多getos的)。

问题在于,goto倾向于使用的情况倾向于是无论如何重构都可以帮助事情的情况-而goto坚持使用随着代码变得更加复杂而变得难以遵循的解决方案。

有没有比使用“ goto”语句更有效的方法来打破主循环?

绝对。将您的方法提取到一个单独的函数中:

while (ProcessValues(...)){
    // Body left deliberately empty}...private bool ProcessValues(){
   for (int i = 0; i < 15; i++)
   {
       // Do something
       return false;
   }
   return true;}

我通常更喜欢这样做,而不是引入额外的局部变量来跟踪“我已经完成”了-尽管当然可以。


查看完整回答
反对 回复 2019-09-26
  • 3 回答
  • 0 关注
  • 693 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信