这是一个名称空间还是一个类
Should this be a namespace or a class?
当您有一组函数之间没有交互时,您可以将它们放在名称空间中。(以math
命名空间为例)
当你有一些公共属性和一组可选的作用于这些属性的函数时,它应该成为一个类。
但是当你有一组相关的函数但是没有公共属性的时候呢?一个例子是事件管理器:您可能只有subscribe()
、post()
和dispatch()
,没有公共属性;但是,您确实有隐藏的属性,如订阅者列表和三个函数所作用的事件队列。这应该是一个类还是一个名称空间?
任何时候你的行为和状态都应该是一个类,即使这个状态不是公共可访问的。这样做的一个实际原因是,这样可以更容易地对其他与该模块交互的模块进行单元测试。
一个类。您有一个状态(尽管是内部状态),因此您可能希望创建两个事件管理器(两个队列)。
这肯定应该是class,因为它有内部状态。如果需要多个实例怎么办?在这种情况下,名称空间无法帮助您,而类可以。
如果你想创建一个或多个实例,每个实例都有一个生命周期,那么它应该是一个类。
事件管理器听起来像是你想要创建、使用然后销毁的东西。所以,它应该是一个类。
名称空间的引入只是为了帮助处理非常大的程序。在一个大型程序中,您可能有多个开发团队,每个团队编写代码。对于每个团队来说,确保没有其他人使用与其他人相同的函数或类名可能是不可行的。或者,事物的名称可能与可能想要使用的第三方库冲突。名称空间有助于避免这些问题。如果您不是在一个大型项目上工作,那么您可能真的不需要为自己的代码使用名称空间,除非您觉得需要将代码组织到几个名称空间中以保持整洁。使用不必要的小名称空间会使代码难以处理。过分纠结代码应该放在这个名称空间还是那个名称空间是没有多大意义的,最好把重点放在确保代码实际工作上。
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- '使用命名空间{嵌套在另一个命名空间中的某个命名空间}"
- 使用另一个命名空间中的函数C++
- 使用命名空间在另一个".cpp"文件中定义
- 是否可以在专用内存空间中分配一个为提升管理共享内存而创建的对象
- C++中是否有一个函数可以为您获取指向该节点的所有指针的地址空间
- C ++使用getline,输出在开头带有一个额外的空间
- 如何使用另一个项目命名空间?
- 使用匿名命名空间中的函数或另一个文件中的静态函数不应该出错吗?
- 在模板参数的函数中使用一个命名空间或另一个命名空间
- 由另一个对象重用对象的空间
- 是否有一个很好的方法可以在C 11中打印出像JSON一样的Trie结构(仅迭代解决方案)的扁平命名空间
- 在同一C 源文件中使用多个名称空间是一个好习惯吗?
- C++另一个命名空间中函数的 ADL
- 如何在另一个名称空间内从另一个命名空间内明确专业化功能模板
- 我可以在标头中将一个命名空间"import"到另一个命名空间中吗?
- 在C 的COUT系列中创建一个空间
- 在C 中的单词之间删除除一个空间以外的所有空间
- 如何将字符串的三个字符放入数组的一个空间中
- 通过emacs将多个空间移到一个空间中以输出屏幕