使用一个或其他迭代函数有哪些优缺点?
function (int n) {
for (int i = 1; i != n; ++i) { ... }
}
VS
function (int n) {
for (int i = 1; i < n; i++) { ... }
}
答案 0 :(得分:5)
我认为反对第一个版本的主要论点是它是一个不那么常见的习语。
记住代码的读取频率高于编写代码,如果没有明确的优势,那么使用不太熟悉的for循环形式是没有意义的。它所实现的一切都会分散将来处理代码的人的注意力。
所以主要是出于代码维护的原因(由其他人以及原始编码器),我赞成更常见的第二种格式。
答案 1 :(得分:1)
如果<
小于n
,则1
版本将正常运行。带!=
的版本将进入无限循环(好吧,可能不是无限的,因为整数变量在大多数语言中都会循环)。
使用<
也可以更好地概括。 E.g。
for (i = start; i < end; i += increment)
即使end - start
不是increment
的倍数,这也会有用。
答案 2 :(得分:1)
第一个是非常危险的,可能导致无限循环。
n
小于1,则循环将永远不会退出。 i
,那么它会跳过n
的值,那么循环将永远不会退出。编辑:当我说永不退出时,确定更准确,它最终会以这种或那种方式退出,但它不会以这种方式出现最理智的开发人员期望。我可以想象一下那个可调试你的代码的可怜的家伙,它可以调用数据库20亿次。