[英]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
享受!
名稱絕對不能大寫。 在我看來,非常需要一個后綴來區分輸入世界和類屬性。
我看不出有什么不好的:
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.