在今天的代码审查期间,我遇到了一个如下所示的循环:
for(int i=0; i<some_value && !found ; ++i)
{
if(some logic)
{
do_stuff();
found=true;
}
}
我通常会编码这种性质的东西:
for(int i=0; i<some_value; ++i)
{
if(some logic)
{
do_stuff();
break;
}
}
我已编程多年,直到今天才在for
循环中看到多个条件。我理解它是完全有效的代码,因为&&
只是被评估并返回结果,我根本没想过使用多个条件在中使用for语句而不是正文。
我直到今天才看到这一点,因此必须假设它不常见。
在for循环检查中使用多个条件时是否有任何陷阱需要注意?
答案 0 :(得分:2)
“极端分子”将break
和continue
视为"accursed" goto
的另一个词。许多Pascal / Delphi程序员都属于这个派系。
如果你应该使用这样的标志,这取决于你的编码约定。我想如果你在非学术背景下编写这样的代码,人们就不会认真对待你。请注意!
当然,如果你想退出外循环,你需要这样的标志,如果你的语言不知道标记的循环。例如JavaScript和Java(我认为PHP也是如此)支持标记循环。
我认为没有任何陷阱。如果您的编译器不是太愚蠢,它将确定这些标志的用法,并重写代码以使用正确的跳转。
使用这样的标志(至少)有一个好处:更容易证明代码的正确性,例如:使用Hoare calculus。
答案 1 :(得分:1)
您好回答您的问题,我是计算机科学专业的大四学生。我个人更喜欢在for循环中有多个约束。我觉得它有助于调试和保持低错误。它更依赖资源吗?我不太确定。