嘿伙计们,我总是遇到一个问题,即类中的Public变量的名称和我传递给相同类构造函数的参数之间的相似性。
定义对象的新实例时,例如Car。用户/程序员唯一能看到的就是它所寻找的参数的名称和类型。
例如:
public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels)
{
}
用户会看到这些名称和类型,并且只能根据其类型和名称知道它们是什么,排除任何xml摘要标记。
现在,我们总是希望我们的公共变量也非常具体。
例如:
public Color BodyColor { get; set; }
public int NumOfDoors { get; set; }
public int SizeOfWheels { get; set; }
现在,我们可以回答我的问题。使用这些单行属性,而不是定义变量的私有实例并为其创建属性,如何使这些变量名称更清晰?
我正在尝试使用其他用户可以理解且易于阅读的命名约定。
现在构造函数看起来像
public Car(Color BodyColor, int NumOfDoors, int SizeOfWheels)
{
this.BodyColor = BodyColor;
this.NumOfDoors = NumOfDoors;
this.SizeOfWheels = SizeOfWheels;
}
这是其他C#程序员写的吗?是否存在已存在的命名约定?乍一看,上面的陈述看起来有点乱,特别是如果省略this.
答案 0 :(得分:16)
我从未见过首字母大写的方法参数。我建议不要这样做,因为它不是标准。 '这个'也变得没必要了。在我看来,下面的代码更具可读性。此外,您会注意到.NET API调用的方法参数没有首字母大写。这适用于任何函数原型,而不仅仅是构造函数。
编辑:如果您的属性在构造函数中只是SET,我建议将setter设为私有(此处的示例代码中未显示)。如果永远不再设置值,另一个好的做法是让它们由字段支持,并使字段为只读。这有点超出了您的问题范围,但与定义和命名字段和属性有关。
public Car(Color bodyColor, int numOfDoors, int sizeOfWheels)
{
BodyColor = bodyColor;
NumOfDoors = numOfDoors;
SizeOfWheels = sizeOfWheels;
}
注意:即使是Stack Overflow语法高亮显示,与原始问题中的代码相比也是可读的。
答案 1 :(得分:0)
.net约定是使用驼峰套作为函数参数。所以你的构造函数可能如下所示:
public Car(Color bodyColor, int numOfDoors, int sizeOfWheels)
{
}
另外,就属性而言,你有正确的外壳,但通常你可以直接为属性而不是属性本身设置私有实例字段 - 假设你没有任何逻辑如果属性设置方。
我通常让我的实例字段以下划线开头,因此从构造函数中设置属性的实例字段可能看起来更像下面这样:
public Car(Color bodyColor, int numOfDoors, int sizeOfWheels)
{
this._bodyColor = bodyColor;
this._numOfDoors = numOfDoors;
this._sizeOfWheels = sizeOfWheels;
}
另请阅读有关.NET框架样式的MSDN设计指南,以进一步详细讨论其他样式元素。这些标准有很好的文档记录 - 因此确实不应该有太多的猜测工作。 http://msdn.microsoft.com/en-us/library/ms229042.aspx
享受!
答案 2 :(得分:0)
答案 3 :(得分:0)
我也使用驼峰套管,但更喜欢在参数名称左边添加'a'前缀
(' a '代表参数,它不是一篇文章)。
我使用驼峰套管,没有任何前缀,用于例程的本地变量
这样做,您可以乍一看从参数中获取局部变量
但我知道这不是常见的做法
我对字段使用与Doug相同的约定,因此您最终会得到:
public Car(Color aBodyColor, int aNumOfDoors, int aSizeOfWheels)
{
this._bodyColor = aBodyColor;
this._numOfDoors = aNumOfDoors;
this._sizeOfWheels = aSizeOfWheels;
}
只是我的两分钱。
答案 4 :(得分:-1)
名称应该在定义上绝不是大写。在我看来,后缀非常需要区分输入世界和类属性。
我没有看到任何不好的事情:
public Car(Color bodyColorInput, int numOfDoorsInput, int sizeOfWheelsInput)
{
this.BodyColor = bodyColorInput;
this.NumOfDoors = numOfDoorsInput;
this.SizeOfWheels = sizeOfWheelsInput;
}