c++ - 什么时候将数据成员存储为引用而不是指针更可取?

标签 c++ tdd reference mocking pointers

假设我有一个包含数据库连接数据成员的对象Employee_Storage。该数据成员应该存储为指针还是引用?

  • 如果我将其存储为引用,我 不必做任何 NULL 检查。 (NULL 检查到底有多重要?)

  • 如果我将它存储为一个指针,它是 更容易设置 Employee_Storage (或 MockEmployee_Storage) 测试目的。

通常,我一直习惯于将我的数据成员存储为引用。然而,这使得我的模拟对象难以设置,因为我现在必须传入真实/模拟对象,而不是能够传入 NULL(大概在默认构造函数中)。

是否有好的经验法则可以遵循,特别是着眼于可测试性?

最佳答案

只有在构造时分配引用时,才最好将引用存储为数据成员,而且确实没有理由更改它们。由于无法重新分配引用,因此它们非常有限。

一般来说,我通常存储为指针(或某种形式的模板化智能指针)。这更加灵活 - 既可用于测试(如您所述),也可用于正常使用。

关于c++ - 什么时候将数据成员存储为引用而不是指针更可取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/957087/

相关文章:

c++ - C++中的字符串管理

c++ - 将十六进制 std::string 转换为无符号字符

c++ - 一次性创建和初始化一个 vector 数组

c++ - C++中引用和指针返回类型之间的区别是什么

c++ - 在 C++ 中,引用限定符是否表达某种形式的子类型?

c# - 将自定义路径设置为引用的 DLL?

c++ - 使用/不使用 boost 对函数参数进行二进制搜索

python 单元测试我的密码验证代码

php - 如何在 PHP 中编写单元测试?