2012-10-23 201 views
4

在工作中,他们对命名空间的命名(在我的时间之前)已经非常详尽。一个典型的命名空间可能是C#命名约定名称空间

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

可悲的是,我不是在开玩笑。问题是,尽管对项目的生活地点来说有些清晰,但它很嘈杂;我想缩短它。

我想使用using关键字(关于声明哪些名称空间将被使用),然后等于符号使用名称空间别名。现在这个问题变成了命名空间声明和类属性之间的不明确性。例如

Project.Message 

目前的情况是,我们没有任何的迹象,如果项目是一个静态类,命名空间或已初始化对象的名称(虽然单词this.将有助于澄清)的名称。

所以,在那个背景下,我的问题是关于命名约定。对我来说,这将是有意义的使用匈牙利风格的命名约定(我知道现在被认为是相当过时的这些天),所以我可以做类似使用

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

请注意,我用ns(namespace)作为它的前缀。因此,如果代码看起来像以下任何一种情况,至少有一些清晰:

this.Project.Message 
nsProject.Message 
Project.Message 

上面例子中的3现在非常清楚:第一已经在该项目被宣布,第二是命名空间第三个可能是一个静态方法调用。

是否有人对此方法有任何意见;我是否在重新发明轮子(是否已经制定了指导方针),还是有人对可以做什么有不同的看法?

编辑

的另一个原因是想使用别名的是当前的命名空间不匹配(或在一些地方任何意义)的文件夹结构。因此,我不仅要确保使用哪种类型的对象/名称空间,而且我的别名也将作为文件夹位置的指南。我知道,这可能是黑客攻击等,但(根据本文的评论),这是许多人的第一阶段。

+3

与其为您的命名空间结构难以处理的问题找到解决方法,为什么不正面解决问题?为什么你需要别名? (为什么不仅仅是“正常的”使用指令?) –

+0

每个项目引用多个项目,所有项目名称都非常相似。问题是追踪代码。在VS2005中,我无法使用Go To Definition(VS不响应),所以我不得不手动跟踪它。没有文档,所以我也在阅读代码,逐行了解它。因此,我想要一些更容易理解的东西,但是清楚地知道对象存在于哪个命名空间中。 – Dave

+6

好吧,这听起来像你有多个问题 - 再次,我敦促你尝试从源头上解决问题,而不仅仅是解决症状。 –

回答

2

我不知道任何“官方”指导方针,但是每当我为命名空间别名时,我通常会使用公司和项目的缩写。这将导致(使用你的例子):

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

我喜欢加上后缀上面匈牙利BTW(主观我知道)。

+0

我同意,该帖子将得到主观答案,如果没有指南 - 感觉我得到的是没有指导方针,这是非常取决于团队!感谢您的时间。 – Dave