在我编写程序的时候,我一直对这个设计决策感到困惑,但我不是100%确定什么时候应该让一个函数成为一个类的成员函数,什么时候让它作为一个普通函数,当函数声明在头文件中公开时,其他源文件可以在其中调用该函数。大多数情况下,对类的成员变量的期望访问与决策有关吗?
发布于 2009-06-08 23:36:36
Herb Sutter的接口原理
对于类X,所有函数,包括自由函数,都
(a)“提及”X,及
(b)“与”X一起供应
在逻辑上是X的一部分,因为它们构成了X的接口的一部分。
要深入讨论,请阅读Herb Sutter的Namespaces and the Interface Principle。
编辑
实际上,如果你想理解C++,请阅读everything what Herb Sutter所写的内容:)
发布于 2009-06-09 00:58:15
当我需要维护状态时,我使用类。如果一个函数不需要访问维护的状态信息,那么我更喜欢自由函数,因为它使测试和代码重用变得更容易。
如果我有一堆相关的功能,但不需要维护状态,那么我更喜欢将自由函数放在一个名称空间中。
发布于 2009-06-09 00:03:08
如果需要访问成员变量或对象实例的某些方面,则应将其设置为方法。
如果它与类密切相关,但不需要访问任何特定于实例的信息,那么应该将其设置为共享函数(或类函数,或静态函数,具体取决于您使用的编程语言)。
即使它只是一个泛型函数,您也有可能拥有多个函数,并且可以根据某个概念对它们进行聚合/组织。然后,您可以创建一个表示该概念的类,并使其成为共享函数。
鉴于上述情况,我再也看不到创建独立函数的任何理由了。
https://stackoverflow.com/questions/967538
复制相似问题