选择命名空间名称时应该知道什么?

时间:2010-09-17 15:13:41

标签: c# naming

我的任务是选择一个名称,该名称实际上是我们架构的内部名称。我认真对待这个责任,因为我曾经处理过很多“糟糕”的命名空间,并且不想在其他名称空间中造成这种情况。

什么使我成为“坏”命名空间?

就人为因素而言:

  • 基本上毫无意义的首字母缩略词:DDLMOS
  • 与其他供应商的公用名称发生冲突的名称空间,例如OfficeTextIO
  • 非母语英语人士难以拼写或发音的名称空间,因为它是外来词或专有名词:Vancouver

等等。

我觉得在描述性能力和助记符方面选择名称空间感觉很舒服。我想知道命名空间名称的技术后果是什么。例如,命名空间_可能会出现什么问题,这是一个合法的C#命名空间名称?一个字母怎么样,比如e?是否存在使CodeDom或Reflector适合的命名空间?在C#中合法的一些命名空间是否会导致其他.Net语言出现问题?是否有可能出于某种原因选择不符合Mono标准的命名空间?您是否使用过一个名称空间,因为涉及编译器或Visual Studio或Windows(或Linux)文件系统的原因使您的生活变得困难?

感谢您的阅读并提前感谢您的帮助!

4 个答案:

答案 0 :(得分:19)

对于非技术性内容,请阅读“框架设计指南”。他们有很多好建议。简言之:

  • 以公司名称开头。
  • 选择稳定(与版本无关)的名称。 FrobCorp.FrobozzleV2.Utilities不好。
  • 选择反映代码目的的名称,而不是产生代码的组织的政治。 FrobCorp.AdvancedResearchDivision.CambridgeOffice很糟糕; AdvancedResearchDivision可能会在明天重命名,剑桥办公室可能会重新安置。
  • 使用PascalCase,除非违反您的品牌。 FrobCorp.jFrobozzle看起来很糟糕,但FrobCorp.Jfrobozzle看起来更糟。
  • 在适当的时候使用复数
  • 等等。

我没有在这里复制的指南中有更多好的建议。去读它们。

然而,听起来你有非技术性的东西了。指南中的一点建议是“不要将类型命名为与其命名空间相同”。这是一个很好的建议,不仅仅是因为这样做会让读者感到困惑;还有一个很好的技术原因。

由于技术原因,为什么命名类型与其命名空间相同是一个可怕的想法,请参阅我关于该主题的文章:

http://blogs.msdn.com/b/ericlippert/archive/tags/namespaces/

答案 1 :(得分:0)

确保命名空间尽可能唯一地启动,以避免您所描述的那种冲突。例如:

 YourCompanyName.subnamespace.subsubnamespace
 YourLastName.YourFirstName.subnamespace.subsubnamespace

答案 2 :(得分:0)

第一次尝试不要太难。无论你认为你的命名约定和结构多么聪明或干净,你都会重命名和移动东西。就是这样。

对于初学者来说,最重要的是确保基本名称中碰撞的可能性很小。稍后,您将能够使用ReSharper等人的工具轻松地重构命名空间。

答案 3 :(得分:-2)

使用您公司内所属单位的名称