vb.net - 命名空间 - 对类进行逻辑分组

标签 vb.net design-patterns namespaces

我了解如何对类进行物理分组,即继承、组合等。但是,我从未真正理解命名空间(类的逻辑分组)的好处。我通常有一个用于表示层的命名空间、一个用于业务逻辑层的命名空间和一个用于数据访问层的命名空间,即:

com.Application.BusinessLogicLayer  
com.Application.PresentationLayer
com.Application.DataAccessLayer

有时表示层会有多个应用程序,例如VB.NET 应用程序和 ASP.NET 应用程序。有时业务逻辑层会被拆分成多个DLL。

我可以回答有关什么是命名空间的考试问题,但我很难将这些知识应用到问题领域。例如,看一下下面的代码:

Namespace com.application.businesslogiclayer
    Public Class ClassA
        Private CB As ClassB
    End Class
End Namespace
Namespace com.application.businesslogiclayer
    Public Class ClassB
        Private CC As ClassC
    End Class
End Namespace

Namespace com.application.businesslogiclayer
    Public Class ClassC

    End Class
End Namespace

由于 ClassA 与 ClassB 具有组合关系,ClassB 与 ClassC 具有组合关系,那么我认为它们应该都属于同一个命名空间,例如

com.application.businesslogiclayer.classABC

。但是,您可以使用“Import”语句引入其他类,所以这可能是不正确的。

开发人员在设计命名空间时使用什么标准?

最佳答案

命名空间不仅对于逻辑分组类型很有用,而且对于避免类型之间的命名冲突很有用,因为命名空间也是完整类型名称的一部分。例如,您的应用程序中可能有一个名为 Log 的类,但您还引用了其他人编写的另一个程序集,该程序集也具有名为 Log 的类。在某些实现中使用这两个 Log 类可能有实际原因(即,因为它们执行不同类型的日志记录,或者一个用于记录信息,另一个代表树的一部分),并且命名空间允许编译器区分这两个 Log类。不要低估使用命名空间进行分组的有用性,因为这在大型项目中变得更加重要。

就标准而言,从单个命名空间开始。随着应用程序的发展,您可能希望使用两个或更多嵌套命名空间来整理单个命名空间,以更好地组织代码,也许可以折叠一些您当前未在 IDE 中处理的代码,以使其不妨碍您,但分组应该合乎逻辑且有意义。在 .NET 中,请遵循基类库中命名空间的设计指南和示例。

关于vb.net - 命名空间 - 对类进行逻辑分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14901219/

相关文章:

vb.net - PDFsharp Beta 1.50 PdfTextField,空异常错误,但仍然有效?

json - 将 vb.net 字符串转换为 Json 对象?

Java 状态设计模式/"substates"

java - 如何重新设计 java 应用程序以在新线程中提供另一个变量副本?

php - 为什么命名空间不能在 PHP 所需的文件中工作?

.net - 使用 Microsoft UI Automation 获取所有 Firefox 打开的 URL

java - 我应该如何将新的 View 组件绑定(bind)到 GWT 的 MVP 模式中的演示者?

c# - 命名空间与 WCF 的相似名称混淆

c# - 命名空间问题

.net - 在 VB.net 中解压一个模式