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

在一个语句中不应声明多个对象或函数

6.10.3 ID_tooManyDeclarators
目录 › next › previous

在一个语句中声明多个对象或函数不利于阅读和维护,建议在一个语句中只声明一个对象或函数。

函数、数组以及相关指针、引用的声明相对复杂,不应和其他声明混在一起。为了便于查阅,对于类及结构体成员、全局对象、具有外部链接性或静态存储期的对象,也不应将多项声明混在一个语句中。对于简单的局部对象声明可适当放宽要求,但仍以一个语句一项声明为宜。

不应将指针、引用、数组、函数等不同类别的声明混在一个语句中,对此本规则特化为 ID_mixedDeclarations。

示例:

int a, b, c, d, e, f, g, ....;   // Non-compliant, too many objects

int fn1(void), fn2(int, int*), fn3(int);   // Non-compliant

struct T {
    int i, j, k;   // Non-compliant
};

例中一个语句声明多个函数、成员或全局对象是不符合要求的。

又如:

void foo() {
    int long_name, name;             // Non-compliant
    int u = complex_expression, v;   // Non-compliant
    ....
    int x, y;   // Simple declarations, let it go?
    ....
}

对于局部对象,审计工具不妨统计声明项及其初始化表达式的字符个数,如果超过指定限制,则判其应在单独的语句中声明。

配置

maxLocalDeclaratorCount: 局部作用域中一个语句能声明的对象个数上限,超过则报出 maxMemberDeclaratorCount: 类或结构体中一个语句能声明的对象个数上限,超过则报出 maxGlobalDeclaratorCount: 全局及命名空间作用域中一个语句能声明的对象个数上限,超过则报出 simpleDeclaratorLengthThreshold: 声明字符数量阈值,超过此值则判其应在单独的语句中声明

相关

ID_mixedDeclarations

参考

C++ Core Guidelines ES.10 MISRA C++ 2008 8-0-1
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.