我最近重构了一个中型应用程序,其中一项工作是将常用代码拆分到不同的项目中。
现在,假设常用的命名空间结构是
Core.Interfaces
- 对于具有接口的主应用程序IFoo
对于每个专门/外部/引用的程序集,我决定对其进行扩展,例如
Core.Interfaces.Html
有一个接口IBar
主应用程序的Core
程序集位于一个名为Core
默认命名空间的项目中,Core
而对于Html
程序集,我创建了HtmlCore
一个默认命名空间为Core
.
结果效果(以及我选择这种特定方法的原因)是,一旦您引用了Html
程序集,using
就不必更新语句,净效果是
Core.Interfaces.IFoo fooIf;
Core.Interfaces.Html.IBar barIf;
或使用上面的 using 语句Core.Interfaces
转换为
IFoo fooIf;
Html.IBar barIf;
这种隐式命名空间结构是依赖关系的直接结果,它确实为我们提供了很好的服务,因为它使项目命名空间维护变得更加容易,并且唯一需要的就是对程序集的引用。该结构类似于微软已经在 .net 框架上所做的。
问题是我有第二个想法,并且(对于未来的项目)我正在考虑一个对每个程序集都明确的命名空间结构,例如:
Core.DataInterfaces
Html.Core.DataInterfaces
那么,有没有人使用过显式结构,甚至是我没有尝试过的其他东西?我愿意接受建议,我正在寻找最佳解决方案,因为目标是在开发过程中从维护和团队混乱中腾出时间。