猿问

测试循环在顶部还是底部?(while vs. while while)

当我在大学(80年代中期)上CS时,不断重复的想法之一就是总是编写循环,在测试的顶部(while ...)而不是底部(do ... while)进行测试。环。这些概念通常以研究为依据,这些研究表明,在顶部进行测试的循环比在底部进行测试的循环更可能是正确的。


结果,我几乎总是写在最上面测试的循环。如果它在代码中引入了额外的复杂性,我不会这样做,但是这种情况似乎很少。我注意到有些程序员倾向于几乎完全编写在底部进行测试的循环。当我看到类似的构造:


if (condition)

{

    do

    {

       ...

    } while (same condition);

}

或反数(if在里面while),这使我想知道他们是否实际上是这样写的,或者if当他们意识到循环不处理空值情况时是否添加了语句。


我已经进行了一些谷歌搜索,但是未能找到有关该主题的任何文献。你们(和女孩)如何编写循环?


子衿沉夜
浏览 677回答 3
3回答

人到中年有点甜

我始终遵循以下规则:如果它应该运行零次或多次,请在开始时进行测试;如果它必须运行一次或多次,请在最后进行测试。我看不到使用您在示例中列出的代码的任何逻辑原因。它只会增加复杂性。

繁星点点滴滴

如果要在循环的第一次迭代之前测试条件,请使用while循环。当您要在运行循环的第一次迭代后测试条件时,请使用do-while循环。例如,如果您发现自己正在执行以下两个片段之一:func();while (condition) {   func();}//or:while (true){    func();    if (!condition) break;}您应该将其重写为:do{    func();} while(condition);

DIEA

避免do/ while确实有助于使我的代码更具可读性吗?没有。如果使用do/ while循环更有意义,请这样做。如果需要在测试条件之前执行一次循环主体,则do/ while循环可能是最直接的实现。
随时随地看视频慕课网APP
我要回答