C 中的命名空间

我正在使用一个 ASP.NET MVC 项目,每次我将一个类添加到一个文件夹时,它都会产生非常长的命名空间。

示例

Project = Tully.Saps.Data  
Folder = DataAccess/Interfaces  
Namespace = Tully.Saps.Data.DataAccess.Interfaces

Folder = DataAccess/MbNetRepositories  
Namespace = Tully.Saps.Data.DataAccess.MbNetRepositories

问题
是否最好单独保留命名空间并将 using 子句添加到访问它的类或将命名空间更改为 Tully.Saps.Data 用于此项目中的所有内容?

请先 登录 后评论

6 个回答

Stu

不要管它们,然后添加使用。您在手动更改此类内容时遇到麻烦(更难调试,与其他项目不一致等)。

请先 登录 后评论
Redbaron

这完全取决于您要如何处理它。如果您只打算访问一个名称空间的成员一次或两次,那么添加“using”语句对您来说并没有多大用处。

如果你要多次使用它,那么减少命名空间链可能会让事情更容易阅读。

如果您只是想在逻辑上将文件分组在一起,而不创建新的命名空间,您可以随时更改命名空间,这样它就不会添加新的文件夹名称。

请先 登录 后评论
Sklivvz

根据 FXCop,我同意:

<块引用>

避免使用少数类型的命名空间

一个命名空间通常应该有超过 五种 类型。

也(这适用于“单一命名空间”的建议——几乎与没有命名空间相同)

<块引用>

在命名空间中声明类型

应在命名空间内定义类型以避免重复。

请先 登录 后评论
Community
  • 命名空间

.Namespaces 帮助我们在对象模型或应用程序中定义一组实体的“范围”。这使它们成为软件设计决策而不是文件夹结构决策。例如,在 MVC 应用程序中,拥有 Model/View/Controller 文件夹和相关的命名空间是很有意义的。因此,虽然在某些情况下,文件夹结构可能与我们决定在开发中使用的命名空间模式相匹配,但这不是必需的,也可能不是我们想要的。每个命名空间都应该根据具体情况来决定

  • 使用语句

为命名空间定义 using 语句是一个单独的决定,具体取决于该命名空间中的对象在代码中被引用的频率,并且不应以任何方式影响我们的命名空间创建实践。

请先 登录 后评论
Haoest

离开它。这是您的 IDE 如何决定您的编码风格的一个很好的例子。

请先 登录 后评论
Bill

仅仅因为您使用的工具 (Visual Studio) 决定每个文件夹都需要一个新的命名空间并不意味着您需要。
我个人倾向于将我的“数据”项目保留为单个命名空间。如果我有一个名为“Model”的子文件夹,我不希望这些文件在 Something.Data.Model 命名空间中,我希望它们在 Something.Data 中。

请先 登录 后评论
  • 13 关注
  • 0 收藏,297 浏览
  • Mike Roosa 提出于 2022-09-27 14:00