避免使用跳转语句退出循环
9.7.7 ID_jumpOutLoop
循环的退出条件应与其控制表达式一致,使代码具有清晰的静态结构,否则可读性较差,尤其在多个嵌套的作用域中使用 break、goto 或 return 等跳转语句,会使代码难以理解。
示例:
while (cond) {
if (x) {
if (y) {
break; // Bad
}
....
} else {
....
break; // Bad
}
}
例中循环条件散落在循环体内,而且循环的主体逻辑被各种跳转语句“割裂”,是不利于阅读和维护的。
相关
参考
MISRA C 2004 14.6
MISRA C 2012 15.4
MISRA C++ 2008 6-6-4