在 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;
不过,如果可能,还请考虑按以下标准之一拆分数据:
- 逻辑组
- 使用地点
- 目的
所以我有以下 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;
不过,如果可能,还请考虑按以下标准之一拆分数据:
- 逻辑组
- 使用地点
- 目的