C#命名命名空间的约定

时间:2012-10-23 08:54:07

标签: c# namespaces naming-conventions

在工作中,他们对命名空间的命名非常精细(在我的时间之前)。典型的命名空间可以是

  

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

可悲的是,我不是在开玩笑。问题是,尽管对项目所处的位置有一些清晰的认识,但它却是如此嘈杂;我想缩短它。

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

Project.Message

就目前而言,我们没有任何迹象表明Project是否是静态类,命名空间或已初始化对象的名称(尽管单词this.将有助于澄清它)。

因此,在此背景下,我的问题是关于命名约定。对我来说,使用匈牙利风格的命名约定是有意义的(我知道这些日子现在已经过时了)所以我可以做类似的事情

  

使用nsProject = CompanyName.SubCompanyName.DepartmentName.ProjectName.UniqueProjectName.ProjectName.FilteredProjectName

请注意,我用ns(名称空间)作为前缀。因此,如果代码看起来像下面之一,则至少有一些清晰度:

this.Project.Message
nsProject.Message
Project.Message

上面的3个示例现在相当清楚:第一个已经在项目中声明,第二个是命名空间,第三个可能是静态方法调用。

是否有人对此方法有任何意见;我是否正在重新发明轮子(是否已有指导原则)或者是否有人对可以做什么有不同的看法?

修改

想要使用Alias的另一个原因是当前命名空间与文件夹结构不匹配(或在某些地方有任何意义)。因此,我不仅要确保使用何种类型的对象/命名空间之间的清晰度,而且我的Alias也将成为文件夹位置的指南。我知道,这可能就像黑客一样,但是(根据这篇文章中的评论)它是很多人的第一阶段。

1 个答案:

答案 0 :(得分:2)

我不知道任何“官方”指南,但每当我命名一个命名空间时,我通常会使用公司和项目的收缩。这将导致(使用您的示例):

this.Project.Message.Send();
CompanyProject.Message.Send();
Project.Message.Send();

我更喜欢在匈牙利语btw之上进行后缀(主观我知道)。