当我在大学里学习计算机科学时(80年代中期),其中一个不断被重复的想法是总是编写循环,在顶部测试(虽然...)而不是在底部(做……while)的循环。这些概念经常得到参考研究的支持,这些研究表明,在顶部测试的循环在统计上比底部测试的对应物更有可能是正确的。
因此,我几乎总是编写在顶部测试的循环。如果它在代码中引入了额外的复杂性,我就不会这么做,但这种情况似乎很少见。我注意到一些程序员倾向于几乎完全编写在底部测试的循环。当我看到像这样的结构时:
if (condition)
{
do
{
...
} while (same condition);
}或者相反(while中的if),这让我怀疑他们是否真的是这样写的,或者当他们意识到循环不能处理null情况时,他们是否添加了if语句。
我做了一些谷歌搜索,但没有找到任何关于这个主题的文献。你们(和女孩们)是怎么写循环的?
发布于 2008-10-22 00:37:08
我总是遵循这样的规则:如果它应该运行零次或多次,则在开始时测试,如果它必须运行一次或多次,则在结束时测试。我看不到任何合理的理由来使用您在示例中列出的代码。这只会增加复杂性。
发布于 2010-06-23 00:17:13
如果要在循环的第一次迭代之前测试条件,请使用while循环。
如果要在运行循环的第一次迭代后测试条件,请使用do-while循环。
例如,如果您发现自己正在执行类似以下代码片段的操作:
func();
while (condition) {
func();
}
//or:
while (true){
func();
if (!condition) break;
}您应该将其重写为:
do{
func();
} while(condition);发布于 2008-12-24 01:51:37
不同之处在于,do循环执行"do某物“一次,然后检查条件以查看是否应该重复"do某物”,而while循环在执行任何操作之前检查条件。
https://stackoverflow.com/questions/224059
复制相似问题