for 循环体不应为空
9.2.5 ID_for_emptyBlock
空的 for 循环结构不清晰,可读性较差。
示例:
int foo(int n) {
int s = 0;
for (int i = 1; i <= n; s += i++); // Non-compliant
return s;
}
for 语句小括号内的三个表达式应分别专注于循环变量的初始化、循环条件的判断、循环变量的增减,循环体应专注于迭代算法的实现,使程序具有清晰的静态结构,便于阅读,利于维护。
应改为:
int foo(int n) {
int s = 0;
for (int i = 1; i <= n; i++) { // Compliant
s += i;
}
return s;
}
另外,在 C++ 代码中,如果只通过 for 语句遍历容器,而不对元素进行操作是没有意义的,如:
void bar(vector<int>& v) {
for (auto i: v); // Non-compliant
}
这种代码多为残留代码或功能未实现,应当及时去除或补全功能。