命名空间可帮助您组织代码并提供关注点分离。它也可以通过创建文件夹或单独的项目来完成。通过良好的逻辑分离,您可以构建可维护和可扩展的应用程序。
当您决定是否创建新文件夹或新项目时,您应该依靠常识。例如,为hello world应用程序创建多个项目是大材小用。为单个班级创建文件夹也太过分了。但是,当您有多个彼此密切相关的类时,请考虑将此特殊关注点与其他应用程序分开。例如,如果你有CustomerRepository
,那么你添加OrderRepository
and VendorRepository
。突出他们所代表的关注是一个很好的决定。创建Repositories
文件夹并将所有这些类移到那里。
对于大型应用程序,将业务逻辑、数据访问逻辑和用户界面等关注点分开是很常见的。通常与这些问题相关的类会分到不同的项目中。请记住,这样做是为了使您的代码更易于理解和维护。因此,命名空间应该向您和任何将维护您的应用程序的人描述关注点。例如,您可以使用三个项目:
FooCompany.BLL
FooCOmpany.DAL
FooCOmpany.UI
那是业务逻辑层、数据访问层和用户界面的首字母缩略词。没有“标准”名称。你可以使用任何能更好地描述你的代码的东西。这是我通常用于公司 Foo 产品 Bar 的项目结构示例:
// Assembly for business logic
Foo.Bar.Domain
Foo.Bar.Domain.Model
Foo.Bar.Domain.Services
Foo.Bar.Domain.Repositories
// Assembly for data access
Foo.Bar.Persistence.NHibernate
// Assembly for application services
Foo.Bar.Services
// Project for presentation
Foo.Bar.Presentation.Web
Foo.Bar.Presentation.Web.Controllers
Foo.Bar.Presentation.Web.Views
顺便说一句,以您正在开发的公司名称开头命名空间名称的常见做法。请参阅命名空间命名指南。当您在不同的命名空间中有两个具有相同名称的类时,这可以避免名称冲突。