吸气剂和吸气剂 vs FRIEND_TEST

Getters and Setters vs FRIEND_TEST

我知道这不是很好的 class UT 设计但是...

万一有保护变量需要测试,直接用FRIEND_TEST到get/set测试这些变量会不会更好?或者我应该创建 getter 和 setter(为每个变量!)?

例如。

class Dog
{
public:
//some methods

protected:
   int age;
   std::string color;
   std::string breed
}

声明一个 FRIEND_TEST 不需要太多开销,这与我为每个 == 6 个新方法创建 getter 和 setter 不同!但是更正确的解决方案是什么?

  1. FREIND_TEST 不是一个好的解决方案,因为您无法真正控制谁可以访问受保护的成员。
  2. 您可以将测试class定义为测试者class的内部class。仅在测试版本上启用此嵌套。

如果您只需要一个 class 能够访问您的受保护成员,请使用朋友 classes。这是C++中的绝对规则。

向您的 class 添加 getter 和 setter 只会增加开销,在最好的情况下,您的编译器会将其删除。

如果你想要更多关于朋友的信息 classes this link 将会很有用。