在C#中区分类名和属性有什么好的命名约定?

时间:2010-05-18 22:28:07

标签: c# design-patterns naming-conventions

我经常遇到这种情况,以为我会看到其他人对此有何看法。

使用StyleCop约定,我发现我经常拥有的属性名称很难与它正在访问的类名不同。例如:

public class ProjectManager
{
 // Stuff here
}

public class OtherClass
{
     private ProjectManager ProjectManager { get; set; }
}

它编译并运行,但似乎很容易混淆事物,即使使用“this”。

3 个答案:

答案 0 :(得分:11)

这实际上是.Net编程中非常常见的模式。尤其是枚举类型和成员,因为它是.Net设计指南推荐的编程方式。

4.0设计指南参考

虽然它可能有点令人困惑,但一旦你看过几次就不会这样。这些工具很好地支持这种模式,并且给定一个是一个类型而另一个实例很难在不引起编译错误的情况下意外地反转它们。

答案 1 :(得分:4)

这是一种典型的命名约定,在任何给定的类中只有一个类型为ProjectManager的属性。它不再令人困惑,因为ProjectManager类型没有其他用途。

当然,如果还有其他用途,那么你需要不同的名字。

答案 2 :(得分:1)

我同意其他答案。为了完整起见,我有时会找到一种方法来更多地概括类名。我理解你的例子只是一个例子,但一种方法是:

public class Person
{
  // Stuff here
}

public class OtherClass
{
  private Person ProjectManager { get; set; }
}

这有助于使其更具可读性。但是,拥有相同的班级名称和财产是完全可以接受的(甚至是鼓励的)。