C# 命名空间的命名约定

4

在工作中,他们对命名空间的命名非常精细(在我加入之前)。一个典型的命名空间可能是

CompanyName.SubCompanyName.DepartmentName.ProjectName.UniqueProjectName.ProjectName.FilteredProjectName

可悲的是,尽管知道项目所在的位置有一定的清晰度,但是这个命名空间太嘈杂了,我想要缩短它。

我想使用 using 关键字(用于声明要使用的命名空间)和等号来使用命名空间别名。现在问题变成了命名空间声明和类属性之间的歧义。例如

Project.Message

现阶段,我们并不知道 Project 是一个静态类、命名空间还是已初始化对象的名称(尽管关键词“this.”可能有助于澄清)。
因此,基于这个背景,我的问题是关于命名规范的。对我来说,使用匈牙利式命名约定(虽然现今被认为过时)会很有意义,这样我就可以做如下操作:

using nsProject = 公司名称.子公司名称.部门名称.项目名称.唯一项目名称.项目名称.过滤后的项目名称

请注意,我在前面加了 ns(命名空间)前缀。因此,如果代码看起来像以下任何一种,至少有一些清晰度:
this.Project.Message
nsProject.Message
Project.Message

以上3个示例现在已经比较清晰了:第一个已经在项目中声明,第二个是命名空间,第三个可能是静态方法调用。
这种方法有什么评论吗?我是否正在重复造轮子(是否已经有指南)或者其他人对可以做什么有不同的意见?
编辑
希望使用别名的另一个原因是当前命名空间与文件夹结构不匹配(或在某些地方没有任何意义)。所以,我不仅想确保使用的对象/名称空间类型清晰,而且我的别名也将作为文件夹位置的指南。我知道,这可能被认为是黑客行为等,但这是许多步骤中的第一步(如本文中的注释所述)。

3
为了解决命名空间结构混乱的问题,为什么不直接着手处理它,而是寻找一种变通方法呢?你为什么需要别名?为什么不使用“普通”的using指令呢? - Jon Skeet
6
听起来你有多个问题,我建议你着手解决问题的根源,而不仅是处理症状。 - Jon Skeet
3
建议使用“using ProjectNamespace = etc”作为别名,而不是使用匈牙利命名法,这更符合微软的命名约定。但这只应视为短期解决方案。 - Polyfun
1
那些使用命名空间,例如'CompanyName.SubCompanyName.DepartmentName....'的人通常在每次重新组织时都会非常后悔。 - Joe
1
@Joe,哈哈,我不认为他们后悔了,可怜的家伙(我)修理它后悔了 :) - Dave
显示剩余7条评论
1个回答

2
我不知道任何“官方”的指导方针,但是每当我创建一个命名空间的别名时,通常会使用公司和项目的缩写。在这个例子中,我的做法是:
this.Project.Message.Send();
CompanyProject.Message.Send();
Project.Message.Send();

我更喜欢使用后缀命名法而不是匈牙利命名法(主观的,我知道)。


我同意,如果没有指南,这篇文章将会得到主观的回答 - 我的感觉是没有指南,很大程度上取决于团队!谢谢你的时间。 - Dave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接