类型和命名空间相同时的类型和命名空间命名

Type and namespace naming when the type and namespace are the same

提问人:Ruben Hart 提问时间:12/31/2022 更新时间:12/31/2022 访问量:59

问:

.NET 设计指南建议避免对命名空间和类型使用相同的名称。

不要对命名空间和该命名空间中的类型使用相同的名称。

例如,不要用作命名空间名称,然后也 提供在同一命名空间中命名的类。多个编译器 要求此类类型完全合格。DebugDebug

鉴于上述情况,建议不要在命名空间中定义类型。在这种情况下,我可以看到两种可能的选项:CustomerCompany.Entities.Customer

  1. 将命名空间复数化为,并在其中具有单数类型Company.Entities.CustomersCustomer
  2. 保留单数命名空间并保留在命名空间中Company.Entities.CustomerCustomerCompany.Entities

这两个选项似乎都是合理的,并且与在命名空间之外使用单个类型相比,选项 1 提供的所有相关类型的逻辑分组感觉很合理(对于具有类似命名问题的类型,可能会重复)。

鉴于这两种选择,是否有针对这种情况的标准方法或基于意见的方法(因此这个问题将结束)?

.NET 空间命名 约定

评论

1赞 D Stanley 12/31/2022
为什么要有命名空间?命名空间中是否会有与其他类似命名空间中的类型同名的类型?换句话说,所有与实体相关的内容都可以在命名空间中吗?CustomerCustomerCompany.Entities
0赞 Ruben Hart 12/31/2022
@DStanley 还有其他类型与之相关,是的,其中有一些类型与其他类型的共享名称。CustomerCustomer

答:

2赞 Guru Stron 12/31/2022 #1

这两种方法都可以使用(如果从这两种方法中进行选择,我个人会选择第二种方法),但还有其他可能性值得考虑:

  1. 在命名空间名称中添加后缀,即 .EntitiesCompany.Entities.CustomerEntities

  2. 从“按类型分组”方法(即实体/存储库/控制器/视图等的根级文件夹)切换到垂直切片架构视频演示)/功能文件夹方法,我个人在过去几年中越来越喜欢这种方法(见这个,这个和这个)。

评论

0赞 Ruben Hart 12/31/2022
感谢您的回复。我喜欢垂直切片方法,这是我在开始新项目时采用的一种模式。这适用于现有项目,不幸的是,迁移体系结构目前不是一种选择。
0赞 Guru Stron 12/31/2022
@RubenHart,我会选择我建议的第一个选项(向命名空间添加后缀)。
1赞 Ruben Hart 12/31/2022
谢谢。我想我会坚持可怕的当前约定(他们有效地使用文件名来逻辑命名空间),然后在以后正确解决这个问题。