域模型命名空间命名约定

时间:2011-01-12 16:12:29

标签: asp.net-mvc namespaces naming-conventions domain-model

问题:

对于asp.net mvc应用程序,我忽略了域文件夹并在单独的库项目中编写域模型。

Visual Studio,具有这样的库项目,将逐个文件夹命名。例如,如果我的图书馆项目被调用:

ES.eLearning.Domain

我有一个名为Services的文件夹,它会自动将Services文件夹中的所有类命名为:

ES.eLearning.Domain.Services

这一切都很好,但让我觉得有点过分。我的项目相对简单,因此没有类名冲突的可能性。即使有,编译器也会把它拿起来。

所以我只需手动编辑名称空间名称到项目名称,即:

ES.eLearning.Domain

这样,在开发前端时,域模型项目只是一个黑盒子,可以提供域模型。我没有看到将命名空间名称与项目文件夹结构相关联的观点,而不是将其视为一个功能块。

因此出现了两个问题:

  1. 这是不好的做法吗?如果是这样,为什么?请记住:这些是中小型项目。

  2. 有没有办法告诉VS 2010如何命名我的命名空间?

  3. 由于

    注意:在我的项目命名中,ES是客户端,eLearning是应用程序,Domain是组件

    PS:关于命名空间命名约定的其他问题我在SO上找到了不同的问题。因此,就我所能确定而言,并非重复。

4 个答案:

答案 0 :(得分:1)

哄骗您的IDE以使用适合您特定环境的命名约定是一种很好的做法。您可以使用项目属性的“应用程序”选项卡中的默认命名空间框来更改VS自动在类文件中插入的命名空间。

答案 1 :(得分:1)

要防止特定文件夹强制其内容使用文件夹名称作为命名空间部分,可以右键单击该文件夹,选择“属性”,然后将“命名空间提供程序”更改为False。这需要对它适用的所有文件夹进行,所以我不确定这是否真的完全回答了你的问题。

修改:看起来ReSharper添加了此功能。

答案 2 :(得分:0)

我不确定是否可以在VS2010中配置禁用此功能..但我不会这样做。

如果您的代码文件放在Domain文件夹中,其名称空间应该是Company.Domain。如果域具有子文件夹服务,则名称空间应为Company.Domain.Services。这是一件好事(最重要的是 - 共同的,实践)。

你最好遵守规则,而不是违反规则:)

答案 3 :(得分:0)

我建议在命名命名空间,文件夹和类时使用单数结尾。例如

namespace ES.eLearning.Domain.Services

将优先为

ES.eLearning.Domain.Service // <-- note missing "s"

源代码中的另一个用法示例:

ES.eLearning.Domain.Constants.FileTypes.Text

可以“更好”理解为

ES.eLearning.Domain.Constant.FileType.Text

这是所有的个人偏好,并不是一个规则。只是一件小事可能会使代码(命名空间)更短,更容易同时阅读。

PS。另一方面,ASP.NET MVC不遵循这个“规则”:

Content
Controllers
Models
Scripts
Views

但无论如何,没有什么可以让你在源代码中“重命名”它们。