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

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

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

当我在大学(80年代中期)上CS时,不断重复的想法之一就是总是编写循环,在测试的顶部(while ...)而不是底部(do ... while)进行测试。环。这些概念通常以研究为依据,这些研究表明,在顶部进行测试的循环比在底部进行测试的循环更可能是正确的。结果,我几乎总是写在最上面测试的循环。如果它在代码中引入了额外的复杂性,我不会这样做,但是这种情况似乎很少。我注意到有些程序员倾向于几乎完全编写在底部进行测试的循环。当我看到类似的构造:if (condition){    do    {       ...    } while (same condition);}或反数(if在里面while),这使我想知道他们是否实际上是这样写的,或者if当他们意识到循环不处理空值情况时是否添加了语句。我已经进行了一些谷歌搜索,但是未能找到有关该主题的任何文献。你们(和女孩)如何编写循环?
查看完整描述

3 回答

?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

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


查看完整回答
反对 回复 2019-12-04
?
繁星点点滴滴

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

如果要在循环的第一次迭代之前测试条件,请使用while循环。


当您要在运行循环的第一次迭代后测试条件时,请使用do-while循环。


例如,如果您发现自己正在执行以下两个片段之一:


func();

while (condition) {

   func();

}


//or:


while (true){

    func();

    if (!condition) break;

}

您应该将其重写为:


do{

    func();

} while(condition);


查看完整回答
反对 回复 2019-12-04
?
DIEA

TA贡献1820条经验 获得超2个赞

避免do/ while确实有助于使我的代码更具可读性吗?


没有。


如果使用do/ while循环更有意义,请这样做。如果需要在测试条件之前执行一次循环主体,则do/ while循环可能是最直接的实现。


查看完整回答
反对 回复 2019-12-04
  • 3 回答
  • 0 关注
  • 681 浏览

添加回答

举报

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