对于asp.net mvc应用程序,我忽略了域文件夹并在单独的库项目中编写域模型。
Visual Studio,具有这样的库项目,将逐个文件夹命名。例如,如果我的图书馆项目被调用:
ES.eLearning.Domain
我有一个名为Services的文件夹,它会自动将Services文件夹中的所有类命名为:
ES.eLearning.Domain.Services
这一切都很好,但让我觉得有点过分。我的项目相对简单,因此没有类名冲突的可能性。即使有,编译器也会把它拿起来。
所以我只需手动编辑名称空间名称到项目名称,即:
ES.eLearning.Domain
这样,在开发前端时,域模型项目只是一个黑盒子,可以提供域模型。我没有看到将命名空间名称与项目文件夹结构相关联的观点,而不是将其视为一个功能块。
这是不好的做法吗?如果是这样,为什么?请记住:这些是中小型项目。
有没有办法告诉VS 2010如何命名我的命名空间?
由于
注意:在我的项目命名中,ES是客户端,eLearning是应用程序,Domain是组件
PS:关于命名空间命名约定的其他问题我在SO上找到了不同的问题。因此,就我所能确定而言,并非重复。
答案 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
但无论如何,没有什么可以让你在源代码中“重命名”它们。