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

函数的退出点数量应在规定范围之内

8.38 ID_tooManyExit
目录 › next › previous

理想情况下应在函数的结尾设置统一的退出点,使代码具有清晰的静态结构,否则可读性较差,尤其在多个嵌套的作用域中使用 return 等语句,会使代码难以理解。

示例:

void foo()
{
    if (a) {
        if (b) {
            return;   // Bad
        }
        ....
    } else {
        ....
        return;   // Bad
    }
}

例中函数的主体逻辑被 return 语句“割裂”,这显然是不利于阅读和维护的。

然而,严格地要求每个函数只能有一个退出点是不够灵活的,对于 if...else-if、switch-case、catch-handlers 等并列的分枝结构,其末尾的退出点可以算作一个退出点,如:

try {
    ....
} catch (A&) {
    ....
    return 0;    // Let it go
} catch (B&) {
    ....
    return 1;    // Let it go
}

配置

maxExitCount: 退出点数量上限,超过则报出

相关

ID_jumpOutLoop

参考

MISRA C 2004 14.7 MISRA C 2012 15.5 MISRA C++ 2008 6-6-5
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.