1

问题:

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

具有此类库项目的 Visual Studio 将逐个文件夹命名空间。例如,如果我的库项目被调用:

ES.eLearning.Domain

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

ES.eLearning.Domain.Services

这一切都很好,但让我觉得矫枉过正。我的项目相对简单,所以没有类名冲突的可能性。即使有,编译器也会选择它。

所以我只是手动将命名空间名称编辑为项目名称,即:

ES.eLearning.Domain

这样,在开发前端时,域模型项目只是一个黑匣子,它提供了一个域模型。而且我没有看到将命名空间名称耦合到项目文件夹结构的意义,而不是将其视为一个功能块。

于是出现了两个问题:

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

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

谢谢

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

PS:我在 SO 上找到的关于命名空间命名约定的其他问题解决了不同的问题。因此,据我所知,不是重复的。

4

4 回答 4

1

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

于 2011-01-12T16:16:09.527 回答
1

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

编辑:看起来ReSharper添加了这个功能。

于 2011-01-13T08:38:06.367 回答
0

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

如果您的代码文件放在 Domain 文件夹中,则其命名空间应为 Company.Domain。如果域有子文件夹 Services,命名空间应该是 Company.Domain.Services。这是一个很好的(和重要的 - 常见的,实践)。

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

于 2011-01-12T16:37:57.677 回答
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

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

于 2011-02-11T12:34:02.627 回答