[英]c# Naming Convention
我開始一個新項目,嘗試實現一些命名約定時遇到一些問題。
我曾經使用以大寫和單數開頭的類,例如Car或User,而我的變量以小寫開頭,所以如果我需要聲明一個包含一些Car和User類型的變量的類,我會這樣做:
public Car car;
private User user;
現在我正在嘗試使用一些屬性,並且我認為它們也應該是PascalCase,這意味着如果我需要聲明相同的示例,我將是:
public Car Car { get; set; }
private User User { get; set; }
你們都可以看到這里出了什么問題,或者您不認為這是一個問題?
所以我該怎么做? 我在這里想念什么?
C#命名約定建議所有公共內容以及類,接口等以大寫字母開頭。 其余應以小寫開頭。
沒問題:
private User User { get; set; }
...因為每個名稱(單詞)的位置定義了什么。 英語的工作方式相同。 例如:“我愛愛”。 (代詞,動詞,名詞)
您遇到的問題稱為“ Color Color
問題,因為它出現的最常見方式是“我需要一個名為Color
的屬性,其類型為Color
”。 C#是專門為優雅管理Color Color
情況而設計的。
有關詳細信息,請閱讀C#4規范中的7.6.4.1節“相同的簡單名稱和類型名稱”。
Color Color
情況的規則有點復雜(相信我,它們不會使編譯器實現者的工作更加輕松!),它們可能導致一些有趣的極端情況。 如果您對此主題感興趣,那么您應該閱讀我的文章:
http://blogs.msdn.com/b/ericlippert/archive/2009/07/06/color-color.aspx
我認為在許多情況下,上下文意味着您將擁有一個特定的名稱-例如,“汽車客戶”,“汽車”等。也就是說,許多人在名稱/類型相同方面沒有問題-請參閱此鏈接: 屬性是否應具有與它的類型同名?
對於一般的命名約定,遵循MS並不是一個不好的開始-http://msdn.microsoft.com/zh-CN/library/vstudio/ms229045(v=vs.100).aspx
那里沒有問題。
因為在使用類的上下文中,不能將其誤認為該屬性,反之亦然。
編輯:好的,我要假設您在carclass內擁有Userclass,如下所示:
public class Car
{
private class User
{
}
private User User
{
get;
set;
}
}
確實會造成問題。 移出您的用戶,問題就解決了。
public class Car
{
private User User
{
get;
set;
}
}
public class User
{
}
這里沒有問題。 正如@NDJ所建議的,如果您不滿意,可以應用上下文向屬性添加其他前綴。 但這通常不會在上下文中添加其他含義。
作為一般的Microsoft樣式指南,建議將Pascal Case用於屬性。
有關大寫的更完整指南,請參見以下MSDN文章
除@Evelie指出的內部類問題外,將屬性命名為與類型相同應該沒有任何問題-實際上,這並非罕見。 .NET到處都有public Color Color
屬性。
如以下程序所示,編譯器可以區分實例調用和靜態調用:
void Main()
{
Car c = new Car();
c.Test();
}
public class Car
{
public Car()
{
User = new User();
}
public void Test()
{
User.Static(); // calls static method
User.Instance(); // implies this.User
}
public User User { get; set; }
}
// Define other methods and classes here
public class User
{
public static void Static()
{
Console.WriteLine("Static");
}
public void Instance()
{
Console.WriteLine("Instance");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.