1

在我们公司,核心 C++ 类之一(数据库连接指针)被实现为引用计数指针。需要明确的是,对象本身不是数据库连接,而是指向数据库连接对象的指针。

图书馆很旧了,设计的人都不在了。

到目前为止,我以及我询问的公司中的任何 C++ 专家都没有提出选择这种特殊设计的充分理由。有任何想法吗?

它引入了一些问题(部分是由于使用了糟糕的引用指针实现),我试图了解这种设计是否真的有一些深层的潜在原因?

这些天的使用模式似乎是 DB 连接指针对象由 DB 连接管理器类返回,并且有点不清楚 DB 连接指针是否被设计为能够独立于 DB 连接管理器使用。

4

1 回答 1

2

很可能是个错误。不看代码就不可能确定,但​​是引用计数指针实现的质量是有启发性的。糟糕的设计,尤其是资源管理方面的设计,在 C++ 社区中并非闻所未闻</bitter sarcasm>

话虽如此,当您拥有不确定生命周期的对象且创建成本非常高,或者其状态需要在多个用户之间共享时,引用计数指针非常有用。根据底层架构,数据库连接可能符合这个定义:例如,如果每个数据库连接都需要通过全球互联网进行身份验证,那么保存单个连接并重用它可能很值得您费心,而不是建立新连接并处理随你去。

但是,如果我对您的理解正确,您就没有一个数据库连接对象,其中包含指向它的引用指针集合。相反,您有一个数据库连接对象,一个指向它的普通指针的集合,以及一个指向这些指针的引用指针的集合。这是精神错乱,几乎可以肯定是原始开发人员思维混乱的结果。另一种选择是,这是一种蓄意的邪恶行为,例如确保工作安全。如果是这样,他们一定是失败了,因为没有一个肇事者仍然为您的公司工作。

于 2010-03-24T14:16:18.360 回答