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

  • 如果我将其存储为引用,则我
    不必做任何NULL 检查。 (无论如何,NULL检查有多重要?)
  • 如果我将其存储为指针,则为
    易于设置Employee_Storage (或MockEmployee_Storage)
    测试目的。

  • 通常,我习惯于始终将数据成员存储为引用。但是,这使我的模拟对象难以设置,因为现在我必须传递true/mock对象,而不是能够传递NULL(大概在默认构造函数中)。

    是否有一个良好的经验法则可以遵循,尤其是针对可测试性?

    最佳答案

    如果在构造时分配了引用,则最好将其存储为数据成员,并且确实没有理由更改它们。由于无法重新分配引用,因此它们的范围非常有限。

    通常,我通常将其存储为指针(或某种形式的模板化智能指针)。这要灵活得多-既可以进行测试(如您所述),也可以按照正常使用情况进行。

    10-07 23:45