构造函数参数的命名约定?

Kyl*_*ven 4 c# constructor properties naming-conventions

嘿伙计们,我总是遇到一个问题,即类中的Public变量的名称和我传递给相同类构造函数的参数之间的相似性.

在定义对象的新实例时,例如Car.用户/程序员唯一能看到的是它所寻找的参数的名称和类型.

例如:

public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels)
{
}
Run Code Online (Sandbox Code Playgroud)

用户将看到这些名称和类型,并且只能根据其类型和名称知道它们是什么,从而排除任何xml摘要标记.

现在,我们总是希望我们的公共变量也非常具体.

例如:

public Color BodyColor { get; set; }
public int NumOfDoors { get; set; }
public int SizeOfWheels { get; set; }
Run Code Online (Sandbox Code Playgroud)

现在,我们可以回答我的问题.使用这些单行属性,而不是定义变量的私有实例并为其创建属性,如何使这些变量名称更清晰?

我正在尝试使用其他用户可以理解且易于阅读的命名约定.

现在构造函数看起来像

public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels)
{
     this.BodyColor = BodyColor;
     this.NumOfDoors = NumOfDoors;
     this.SizeOfWheels = SizeOfWheels;
}
Run Code Online (Sandbox Code Playgroud)

这是其他C#程序员写的吗?是否存在已存在的命名约定?乍一看,上面的陈述看起来有点乱,特别是如果你省略了this.

Ste*_*bbi 16

我从未见过首字母大写的方法参数.我建议不要这样做,因为它不是标准.'这个'也变得没必要了.在我看来,下面的代码更具可读性.此外,您会注意到.NET API调用的方法参数没有首字母大写.这适用于任何函数原型,而不仅仅是构造函数.

编辑:如果您的属性仅在构造函数中设置为SET,我建议将setter设为私有(此处的示例代码中未显示).如果永远不再设置值,另一个好的做法是让它们由字段支持,并使字段为只读.这有点超出了您的问题范围,但与定义和命名字段和属性有关.

public Car(Color bodyColor, int numOfDoors, int sizeOfWheels)
{
     BodyColor = bodyColor;
     NumOfDoors = numOfDoors;
     SizeOfWheels = sizeOfWheels;
}
Run Code Online (Sandbox Code Playgroud)

注意:与原始问题中的代码相比,即使Stack Overflow语法突出显示也使其可读.

  • `this.BodyColor`并不罕见,因为一个小错字:`bodyColor = bodyColor`突然你的程序会默默地失败!请注意,错误"this.BodyColor = BodyColor"在运行时仍会失败...幸运的是,Resharper*(或简单的Visual Studio?)*会警告您这两个错误.*和*这是参数和字段/属性的单独语法着色的好例子! (3认同)
  • 猜猜我的评论应该是一个答案,但无论如何+1给你:) (2认同)