如何根据命名空间正确命名类?

时间:2009-03-10 18:36:09

标签: .net class naming-conventions namespaces

人们经常可以看到类名带有对它们所属的命名空间的引用。其中一个最流行的例子是.NET'Xml'命名空间,其中定义的每个类都以'Xml'标记为前缀。

这对我来说似乎总是多余,但最近我意识到在某些情况下它可能有用......但仍然是多余的。

我想知道人们如何处理这个问题。

感谢。

3 个答案:

答案 0 :(得分:5)

我采取“何时适当”的方法。我们的想法是,您希望使用最有意义的名称来命名您的类。在某些情况下,它确实意味着类名称在某种程度上与命名空间有些冗余,但请记住,除了作为using指令的一部分之外,命名空间通常不被视为代码中类名的一部分。

命名空间用于逻辑地将相关类等组合在一起,以帮助开发人员找到正确的类,并帮助最小化名称冲突的可能性。

答案 1 :(得分:4)

我倾向于在命名问题上遵守Microsoft's guidance


回复:斯科特的评论。

我认为MS在这个问题上非常明确,它类似于你对OP的回复。例如:

  

不要引入通用类型名称   例如元素,节点,日志和   信息。有一个很高的   它会导致类型名称的概率   常见情景中的冲突。您   应该限定泛型类型名称   (FormElement,XmlNode EventLog,   的SOAPMessage)。

在OP的问题中,引用了Xml命名空间。如果你看一下那些类的名字,它们就是非常常见的名字,而不是“Xml”,它们位于它们之前 - 属性,字典,文档等。

无论如何,就像我说的那样,我试着遵循他们的建议。

答案 2 :(得分:1)

我喜欢System.Xml类具有Xml前缀。它帮助我将它们与通用对应物区分开来。什么是文档与XmlDocument?前缀变得更清晰。在我看来,无论如何。

在我自己的课堂上,我试着遵循这种精神。如果我正在使用一个通用的词并将其包装在我的课程中,我可以选择使用命名空间作为前缀。例如:

MyProject.Client.Application将与Application冲突,这是一个.NET类。

MyProject.Client.ClientApplication将避免碰撞问题,同时仍然清楚该类的作用(至少就我的项目而言)。