while 循环体不应为空
9.3.5 ID_while_emptyBlock
空的 while 循环将功能全部压缩到了条件表达式中,各子句的职责划分不明确,可读性较差。
示例:
while (flg.test_and_set()); // Non-compliant
i = (i * j) % n; // The indent is odd here
flg.clear();
示例代码循环检测并设置某标志位,这些功能被压缩到了循环条件中,而且容易使人误以为下一行代码也与循环有关。
应改为:
while (true) { // Compliant
if (!flg.test_and_set()) {
break;
}
}
i = (i * j) % n;
flg.clear();
循环体的内容才是循环主体功能的体现,不应为空。