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

函数参数的数量应在规定范围之内

8.42 ID_tooManyParams
目录 › next › previous

函数参数过多,意味着:

  • 缺少合理的抽象机制:应将多而零散的参数按其内在联系封装成对象,从而方便地处理其逻辑关系,而不是简单地线性罗列
  • 违反单一职责原则:参数越多,函数处理的事务自然越多,代码的可维护性自然越差

建议可供外部使用的全局函数、public 或 protected 成员函数的参数不超过 4 个,内部使用的 static 函数、private 成员函数的参数不超过 8 个。

示例:

void foo(A a, B b, C c, D d, E e) {   // Bad
    ....
}

当函数参数过多时,应按参数的逻辑职责进行封装。假设 a 和 b 有直接逻辑关系,c、d、e 有直接逻辑关系,不妨将 a 和 b 封装成一个类,c、d、e 封装成一个类,在类的成员函数中实现相关功能,可更为清晰直观地保证逻辑关系的正确性:

class X {
    ....    // Members and methods for ‘a’, ‘b’ ...
};

class Y {
    ....    // Members and methods for ‘c’, ‘d’, ‘e’ ...
};

void foo(X x, Y y) {   // Good
    x.methods();
    y.methods();
}

配置

maxParamCount: 函数参数数量上限,超过则报出 maxInnerFunParamCount: static 函数或 private 成员函数参数数量上限,超过则报出

参考

C++ Core Guidelines F.2 C++ Core Guidelines I.23
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.