当我在大学(80年代中期)上CS时,不断重复的想法之一就是总是编写循环,在测试的顶部(while ...)而不是底部(do ... while)进行测试。环。这些概念通常以研究为依据,这些研究表明,在顶部进行测试的循环比在底部进行测试的循环更可能是正确的。结果,我几乎总是写在最上面测试的循环。如果它在代码中引入了额外的复杂性,我不会这样做,但是这种情况似乎很少。我注意到有些程序员倾向于几乎完全编写在底部进行测试的循环。当我看到类似的构造:if (condition){ do { ... } while (same condition);}或反数(if在里面while),这使我想知道他们是否实际上是这样写的,或者if当他们意识到循环不处理空值情况时是否添加了语句。我已经进行了一些谷歌搜索,但是未能找到有关该主题的任何文献。你们(和女孩)如何编写循环?
3 回答
人到中年有点甜
TA贡献1895条经验 获得超7个赞
我始终遵循以下规则:如果它应该运行零次或多次,请在开始时进行测试;如果它必须运行一次或多次,请在最后进行测试。我看不到使用您在示例中列出的代码的任何逻辑原因。它只会增加复杂性。
繁星点点滴滴
TA贡献1803条经验 获得超3个赞
如果要在循环的第一次迭代之前测试条件,请使用while循环。
当您要在运行循环的第一次迭代后测试条件时,请使用do-while循环。
例如,如果您发现自己正在执行以下两个片段之一:
func();
while (condition) {
func();
}
//or:
while (true){
func();
if (!condition) break;
}
您应该将其重写为:
do{
func();
} while(condition);
DIEA
TA贡献1820条经验 获得超2个赞
避免do/ while确实有助于使我的代码更具可读性吗?
没有。
如果使用do/ while循环更有意义,请这样做。如果需要在测试条件之前执行一次循环主体,则do/ while循环可能是最直接的实现。
添加回答
举报
0/150
提交
取消