顶级命名空间应包含哪些内容?

问题描述 投票:0回答:5

什么应该进入顶级命名空间?例如,如果我有MyAPI.WebLogic、MyAPI.Compression等,如果我将类放入顶级命名空间中,我是否违反了封装原则?

c# .net vb.net namespaces oop
5个回答
3
投票

命名空间不适用于 OOP 相关概念,例如封装。它们用于组织,因此以对您的应用程序有意义的方式组织它。我在网站上所做的大多数工作都有一个业务库,而且大多数情况下它都隐藏在一个命名空间下。


2
投票

取决于课程是什么。

我尝试遵循的一个准则是命名空间之间的依赖关系不应遵循循环。换句话说,低级命名空间无法访问高级命名空间中的类型。

这意味着顶级 MyAPI 命名空间必须包含以下任一内容:

  • 高级代码:允许查看 MyAPI.WebLogic 和 MyAPI.Compression 内部的代码
  • 或者,低级代码:MyAPI.WebLogic 和/或 MyAPI.Compression 使用的代码

Patrick Smacchia 写了很多关于以这种方式构建代码的优点的文章,包括在此站点上:检测 .NET 中命名空间之间的依赖关系


0
投票

取决于命名空间的真正用途。如果它是一个应用程序,那么可能是引导程序类、加载器 etx、Main 等。我会说(和所有事情一样)“这取决于”。


0
投票

我认为你这样做并没有真正违反封装本身。

通常命名空间只是组织类以使它们更容易查找的一种方式,所以无论什么对您的应用程序有意义。


0
投票

据我所知,您根本没有违反封装性。事实上,我什至不确定这是否可以称为封装,因为命名空间不是 OOP 所特有的 - 它只是类型的起源。

规则很简单,如果您认为类型属于顶级命名空间,则将其放置在顶级命名空间中。这种情况的一个明显的例子是(使用您的示例)MyAPI.WebLogic 和 MyAPI.Compression(也许以及其他)都需要使用某种类型 - 因此最好将此类型放入 MyAPI 中。如果您仍然不太确定属于什么,请使用 Microsoft 库作为示例。 BCL 中的

System
命名空间中有很多类!

© www.soinside.com 2019 - 2024. All rights reserved.