for 语句没有明确的循环变量时应改用 while 语句
9.2.4 ID_for_simplification
for 语句一般用于实现具有明确循环次数和循环变量的迭代算法,循环变量即控制循环次数的变量。for 语句小括号内的三个表达式应分别专注于循环变量的初始化、循环条件的判断、循环变量的增减,这样可以使循环具有清晰的静态结构,便于阅读,利于维护。
如果没有明确的循环变量,则应改用 while 循环,避免误导维护者。
示例:
int n = 0;
for (; condition(); n++) { // Non-compliant, ‘n’ is not a loop variable
....
}
例中 n 不是循环变量,它可以记录循环次数,但与循环条件无关,应改为 while 循环:
int n = 0;
while (condition()) { // Compliant
....
n++;
}
如果 for 语句的第 1 个和第 3 个表达式为空,则更应改为 while 循环,使代码更简洁,如:
for (; condition(); ) { // Non-compliant
....
}
for (;;) { // Non-compliant
....
}
应改为:
while (condition()) { // Compliant
....
}
while (true) { // Compliant
....
}