繁体   English   中英

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

[英]Naming conventions for Constructor Arguments?

我总是有一个问题,即类中公共变量的名称与我传递给同一个类构造函数的参数之间的相似性。

当您定义对象的新实例时,例如 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.

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

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

public Car(Color bodyColor, int numOfDoors, int sizeOfWheels)
{
     BodyColor = bodyColor;
     NumOfDoors = numOfDoors;
     SizeOfWheels = sizeOfWheels;
}

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

我也使用驼峰式大小写,但更喜欢在参数名称的左侧添加一个“a”前缀
(' a ' 代表论点,它不是文章)。
对于例程的任何局部变量,我使用没有任何前缀的驼峰式外壳。
这样做,您乍一看可以从参数中分辨出局部变量。
不过,我知道这不是常见的做法。
对于字段,我使用与 Doug 相同的约定,因此您最终会得到:

public Car(Color aBodyColor, int aNumOfDoors, int aSizeOfWheels)
{
     this._bodyColor = aBodyColor;
     this._numOfDoors = aNumOfDoors;
     this._sizeOfWheels = aSizeOfWheels;
}

只是我的两分钱。

.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;
}

另请阅读 MSDN Design Guidelines for style for the .NET framework 以进一步详细讨论其他样式元素。 这些标准有很好的文档记录 - 所以真的不应该有太多的猜测工作。 http://msdn.microsoft.com/en-us/library/ms229042.aspx

享受!

请参阅此处此处的MS 命名约定。

名称绝对不能大写。 在我看来,非常需要一个后缀来区分输入世界和类属性。

我看不出有什么不好的:

public Car(Color bodyColorInput, int numOfDoorsInput, int sizeOfWheelsInput)
{
     this.BodyColor = bodyColorInput;
     this.NumOfDoors = numOfDoorsInput;
     this.SizeOfWheels = sizeOfWheelsInput;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM