【发布时间】:2017-04-06 18:08:23
【问题描述】:
我实际上正在开始一个全新的项目,其中我现在已经有很多项目。我要质疑的是,大多数人可能会以与构建项目层次结构相同的方式构建命名空间。
示例:
在一个 n 层应用程序中,您可能有一个可以包含三个模块的表示层
- 启动
- 核心
- 一些模块
“正常”命名空间现在可能如下所示:<CompanySpecific>.Presentation.<ProjectName>.<IndividualStuff>
这看起来不错吧? 您完全可以像这样组织您的命名空间,但请考虑以下事项。
想象 Core 和 SomeModule 都会有 Windows 和 Controls 子命名空间。这意味着要使用所有控件和窗口,您可以适当地添加那些 using 指令:
using <CompanySpecific>.Presentation.Core.Windows;
using <CompanySpecific>.Presentation.Core.Controls;
using <CompanySpecific>.Presentation.SomeModule.Windows;
using <CompanySpecific>.Presentation.SomeModule.Controls;
您的命名空间越深,您需要包含的内容就越多。
所以你完全可以省略命名空间的项目部分。这将导致这些命名空间被 Core 和 SomeModule 扩展:
using <CompanySpecific>.Presentation.Windows;
using <CompanySpecific>.Presentation.Controls;
您真正可以访问哪些类取决于您的项目依赖关系,就像以前一样。
问题
您现在知道这会导致哪种问题。我不想更准确地说明这一点。
- 在命名空间中使用项目名称是否有意义?
- 您是否也按体系结构层对命名空间进行分组? (就像我在演示文稿中所做的那样)
- 是否有其他标准可能有助于构建命名空间?
- 是否有任何已知的最佳实践可以做到这一点? (不太平,也不太深)
【问题讨论】:
-
Deffo 值得一读 Onion 架构。见jeffreypalermo.com/blog/the-onion-architecture-part-1。这应该让您考虑程序集/模块之间的依赖关系。
-
@Andez 谢谢,值得一读。
标签: c# namespaces concept