☰
  • 首页
  • 规则分类
  • 项目介绍
search
•••

for 语句没有明确的循环变量时应改用 while 语句

9.2.4 ID_for_simplification
目录 › next › previous

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
    ....
}

参考

C++ Core Guidelines ES.73
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.