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

类不应既有 public 数据成员又有 private 数据成员

5.1.3 ID_mixPublicPrivateData
目录 › next › previous

类的设计应遵循:

  • 成员之间没有依赖关系,且都可以随意被读写时,则都应声明为 public
  • 成员之间有依赖关系,或成员的状态会影响到整个对象的状态时,则都应声明为 private

否则应对类进行改造或拆分。

面向对象的封装理念更倾向于将所有数据成员都设为 private,由成员函数按指定逻辑控制每个成员的读写方法,以供外部访问,对代码的职责进行有效地划分,从而提高可维护性并降低风险,关于封装的进一步讨论可参见 ID_nonPrivateData。

常量数据成员不可被改变,所以可不受本规则约束。

示例:

class A {  // Non-compliant
public:
    int n;
    ....
private:
    int d;
};

应改为:

class A {  // Compliant
public:
    int method_for_n();
    ....
private:
    int n, d;
};

相关

ID_nonPrivateData ID_protectedData

参考

C++ Core Guidelines C.9 C++ Core Guidelines C.134
Copyright©2024 360 Security Technology Inc., Licensed under the Apache-2.0 license.