在 C++ 中重构数据 class

Refactoring a data class in C++

所以我有以下 class 我觉得很傻,想重构。

class Data
{
  public:
    bool getVariableA();
    bool getVariableB();
    bool getVariableC();

    void setVariableA();
    void setVariableB();
    void setVariableC();

  private:
    bool A;
    bool B;
    bool C;
}

这持续了大约 100 个变量并且还在增加,其中大部分是布尔值。如果您要重构此 class(同时将所有数据保留在其中而不是分散开来),您会怎么做?

当前结构的问题至少是 a) 代码太多 b) 添加东西很麻烦 c) 在扩展 class.[=12= 时总是需要手动添加单元测试覆盖率]

首先,您必须重新考虑您的 class 设计。根据最佳实践,您的 class 应该承担单一责任。因此,如果您有很多成员变量,那么您的 class 可能会承担不止一项责任。 对于重构,您可以从此 class 中提取更多 classes。这意味着您可以将相关变量和功能分组到另一个 class 中并使用它。例如,如果有一些变量,

bool isNetworkConnected;
bool isNetworkReachable;
int networkSpeed;
string networkName;

在这种情况下,您可以创建一个名为 NetworkInformation 的新 class,然后声明一个 class 变量,如

NetworkInformation networkInfo;

希望对您有所帮助。

how would you go about it?

@JohnHenly 提出的解决方案是正确的:

我会使用这个代码:

std::vector<bool> data;
enum index { var_a, var_b, var_c, ... };

data[var_a] = true;

不过,如果可能,还请考虑按以下标准之一拆分数据:

  • 逻辑组
  • 使用地点
  • 目的