当前位置:  开发笔记 > 编程语言 > 正文

循环最佳实践

如何解决《循环最佳实践》经验,为你挑选了2个好方法。

我有一个非常大的循环,循环1000行.如果找到魔术值1,我退出循环.如果未找到魔法值1但发现魔法值2,则循环需要跳到开头.现在我正在使用一个开关,一些ifs和一个goto.我读过goto不是最好的方法.有没有更好的方法来使这项工作?



1> cgreeno..:

要退出循环,可以使用break语句转到下一条记录,可以使用continue语句.

for(int i = 0; i < 1000; i++)
{
    if(magicValue1)
       break;
    if(magicValue2)
       continue;
}

我没有考虑使用GOTO声明我只是简单地指出了一个可能的使用案例

您可以使用goto jump语句来启动/退出循环,但是除非您使用嵌套循环,否则我将远离此选项.我认为goto语句仍有其用于优化,干净利落的用途......但一般来说最好使用它非常谨慎.

for(int i = 0; i < 100; i++)
{ 
  start:

  for(int i = 0; i < 10; i++)
  {
     if(magicValue1)
       goto end;
    if(magicValue2)
       goto start;
  }
}
end : 


+1能够在不提倡在所有情况下使用概念的情况下解释概念.
在这种特殊情况下,"goto"没有任何恶意 - 它与`break`和`continue`没有根本的不同(后者恰好使用了隐式标签).如果你反对在这种情况下使用`goto`,你也应该反对'break`和`continue`.

2> Can Berk Güd..:

这个怎么样:

for(int i = 0; i < 1000; i++) {
    if(values[i] == MAGIC_VALUE_1) {
        break;
    } else if(values[i] == MAGIC_VALUE_2) {
        i = 0;
    }
}

如果通过"跳到开头"表示"跳过此记录并处理下一个记录",则替换i = 0continue.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有