我正在更新一些旧的无人维护的软件,我注意到一种我无法充分解释的特殊模式。
有问题的代码是用 C++ 编写的。通常,当我看到数据成员时,它们作为公共或私有成员存在于类声明中。在我目前正在使用的代码中,几乎每个类都将数据成员存储在一个额外的结构中,如下所示:
struct MyClassData {
int foo;
int bar;
};
class MyClass {
MyClassData classData;
public:
void doFoo();
void doBar();
void doBaz();
};
不幸的是,这段代码的原始维护者无法访问。但是,每个班级(大约有一百个)都这样做。我不知道为什么,因为 MyClassData 结构从未在类声明顶部以外的任何地方使用过。
为什么有人会选择以这种方式布局他们的 C++ 类,有什么特别的原因吗?我知道想要和使用结构作为数据成员是有原因的,但我不明白的是为什么你想把所有的数据成员都放在一个这样的结构中,而不是用那个结构做任何其他事情. 我想它可能会消除您在方法中访问的内容以及如何访问的任何歧义(因为一切都需要首先通过 classData),但除此之外,我不知道。我想知道是否有我尚未发现的技术原因。