在该项目中,我们正在试图达成一项协议,在空间使用情况。我们决定,在第一级,将"产品名称"第二个是"moduleName".

productName::moduleName

现在,如果该模块是一种实用模块,没有问题,以加入第三名字空间。例如添加"str":产品名称::utilityModuleName::str-来划分的空间里所有的"串的"相关的东西将去。

如果该模块是主要的业务模块,我们有许多机会,并且几乎没有协议。

例如

class productName::mainModuleName::DomainObject

class productName::mainModuleName::DomainObjectSomethingElseViewForExample

可以在

namespace productName::mainModuleName::domainObject
class Data
class ViewForExample

为什么我们应该创建内没有私人类并没有命名空间?为什么我们应该创建类的所有方法都是静态的(除的情况下,当这类要的模板参数)?

项目包括1gb的源码。那么,什么是最佳做法划分模块上的名字空间的用c++?

有帮助吗?

解决方案

什么样的名称空间是用于:

名称空间是为了建立上下文仅使你没有命名confilcts.

一般规则:

指定太多的方面是不必要的,并将导致更多的不便于它是值得的。

所以你要用你最好的判断,但仍然遵循这2个规则:

  • 不要太大时使用名称空间
  • 不要过于具体的当使用名称空间

我就不会那么严格的有关如何使用的名字空间的名字,简单地使用的名称空间基于相关组的代码。

为什么名称空间是太一般都没有帮助:

该问题的分割空间开始的产品名称,是你会常常有分量的代码,或一些基本的图书馆为多种产品。

你也不会使用Product2名字空间内产品1,所以明确指明这是毫无意义的。如果你们其中包括Product2的文件内产品1,然后这是命名转换仍然有用吗?

为什么命名空间过于具体,不是有帮助:

当你有名字空间,太具体,行之间的这些不同的名字空间的开始变得模糊。你开始使用的名称空间内的每一个其他来回。在这段时间这是最好的概括共同的代码一同在同样的名字空间。

课程的所有静态vs模板:

"为什么我们应该创建内不 私人类并没有命名空间?为什么我们应该创建类所有 方法都是静态"

一些区别:

  • 名字空间,可以暗含的使用 using 关键字
  • 名字空间,可以别名、类别的类型和可typedef'ed
  • 名字空间可以加入;你可以添加功能,它在任何时间加入到它直接
  • 类不能加入到没有作出新的派生类
  • 名字空间,可以前的声明
  • 有课,你可以拥有私人成员和受保护的成员
  • 课程可以使用的模板

究竟是如何划分:

"项目包括1gb源 代码。那么,什么是最佳做法 除模块的名字空间的 c++?"

这太主观要说究竟是如何把你的代码没有确切来源的代码。划分基础上的模块,虽然听起来合乎逻辑,只不整的产品。

其他提示

这一切都是主观的,但我会毫不犹豫地超过3级。它在某些方面变得太笨重了。因此,除非你的代码库非常非常大,否则我会保持它非常浅。

我们将代码划分为子系统,并为每个子系统设置命名空间。如果实际上它们可以跨子系统重用,那么实用程序将进入它们自己的命名空间。

在我看来,您正在尝试使用名称空间作为设计工具。它们并非旨在用于此目的,它们旨在防止名称冲突。如果没有冲突,则不需要命名空间。

我根据其用法划分名称空间:

我有一个单独的命名空间,我已经定义了所有的接口(纯虚拟类)。

我有一个单独的命名空间,我已经定义了我的库类(比如db库,处理库)。

我有一个单独的命名空间,我有我的核心业务(业务逻辑)对象(如purchase_order等)。

我想,它是关于以某种方式定义它,这在将来变得难以处理。因此,您可以检查当前设计所面临的困难。

如果你认为他们没事,你就应该坚持下去。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top