什么应该进入顶级命名空间?

时间:2009-05-07 15:05:06

标签: c# .net vb.net namespaces oop

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

5 个答案:

答案 0 :(得分:3)

命名空间不适用于封装等与OOP相关的概念。有组织,所以组织它以一种对你的应用程序有意义的方式。我在网站上做的大部分工作都有一个商业图书馆,而且大部分时间都藏在一个名称空间内。

答案 1 :(得分:2)

取决于课程的内容。

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

这意味着顶级MyAPI命名空间必须包含:

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

Patrick Smacchia已经写了很多关于以这种方式构建代码的优势,包括在这个网站上:Detecting dependencies between namespaces in .NET

答案 2 :(得分:0)

取决于命名空间的真正含义。如果它的应用程序可能类似于引导程序类,加载程序etx,Main等等。我会说(与所有内容一样)“它取决于”。

答案 3 :(得分:0)

我不认为你这样做本身就违反了封装本身。

通常命名空间只是一种组织类的方法,使它们更容易找到,所以对你的应用程序来说是有意义的。

答案 4 :(得分:0)

就我所见,你根本没有违反封装。事实上,我甚至不确定这可以称为封装,因为命名空间不是特定于OOP的 - 它只是类型的组织。

规则只是在顶级命名空间中放置一个类型,如果你觉得它属于那里。这种情况的一个明显的例子是(使用你的例子)MyAPI.WebLogic和MyAPI.Compression(可能和其他人一样)都需要使用某种类型 - 因此最好只将这种类型放在MyAPI中。如果您仍然不确定属于哪个,请使用Microsoft库作为示例。 BCL中的System命名空间中有很多类!