2009-10-24 146 views
28

什麼是C#中普遍接受的命名慣例? (函數,類,參數,局部變量,命名空間等)在C#命名約定

+7

通用公認的?沒有這樣的事我的朋友。 – JohnFx 2009-10-24 15:47:52

+1

公平點 - 但是C#超過大多數(因爲MS指南從一開始就相當明顯)有一套更經常遵循的標準。 – Murph 2009-10-24 15:55:51

+0

JohnFx ...「普遍接受」應該是一個更好的術語 – Nestor 2009-10-24 16:08:56

回答

61

微軟擁有出色的set of guidelines on class library design,包括section on naming。總之(括號中的例子):

  • 類/的Structs:PascalCase(WebRequest
  • 接口:PascalCase與我的前綴(IDisposable
  • 方法:PascalCase(ToUpper
  • 屬性:PascalCase( Length
  • 活動:PascalCase(Click
  • 命名空間:PascalCase(System.Collections;不尋常的具有兩個在雖然一部分)
  • 非恆定變量,包括參數的話:駝峯格式(keySelector
  • 常量:PascalCase(Int32.MaxValue
  • 枚舉:PascalCase,奇異非標記和多個用於標誌(HttpStatusCodeBindingFlags
  • 屬性:PascalCase與「屬性」後綴(ThreadStaticAttribute

私人名字是你的,但我傾向於遵循相同的約定作爲一切。雖然很多地方使用「m_」或「_」作爲實例變量的前綴,但是不鼓勵使用匈牙利符號(採用Win32的風格)。

+0

尼斯概述@Jon。請參閱以下網址獲取上述代碼示例:http://www.dofactory.com/reference/csharp-coding-standards – 2017-07-27 09:56:35

4

Microsoft的.NET標準是使用Pascal Case作爲名稱空間,公共和受保護成員(基本上其他類可見的任何東西)。對於私人會員和本地變量,只要做你和你的團隊最熟悉的事情就可以有更廣泛的位置。

2

不要低估跟着你已儘可能接近工作儘可能平臺的命名約定的價值。

看的.NET Framework的參考材料的如何「適應」的例子(http://msdn.microsoft.com/en-us/library/ms229335.aspx)。

喬恩斯基特給你一個鏈接到一個良好的書面記錄由微軟:http://msdn.microsoft.com/en-us/library/ms229042.aspx

您也可以使用獨立微軟的FxCop(或代碼分析,如果你有團隊版)http://www.microsoft.com/downloads/details.aspx?FamilyID=9aeaa970-f281-4fb0-aba1-d59d7ed09772&DisplayLang=en檢查的命名約定有一直跟着。它具有適用於Microsoft約定的內置規則,這是您應該使用它們的另一個原因!

+0

+1對於FxCop建議 – Nestor 2009-10-24 16:01:54

+0

FxCop鏈接似乎已經死機(需要我到http: //www.microsoft.com/en-us/download/)。 – Default 2014-10-23 11:30:40

1

我想看看所謂的「Elements of C# Style」的鮑德溫,灰色,& Misfeldt超薄的書。這本藍皮書涵蓋了命名約定以及創建一致,乾淨,可讀代碼的許多其他方面。

4

ReSharper的指南建議


  • 類型和命名空間UpperCamelCase
  • 接口IUpperCamelCase類型參數TUpperCamelCase
  • 方法屬性和事件UpperCamelCase本地
  • 變量lowerCamelCaselowerCamelCase
  • 參數局部常量lowerCamelCase字段(不是私人)UpperCamelCase
  • 實例字段(私人)_lowerCamelCase
  • 靜態字段(私人)_lowerCamelCase
  • 恆定字段(非私有)個UpperCamelCase
  • 常數字段(私有)UpperCamelCase
  • 靜態只讀字段(未公開)UpperCamelCase
  • 靜態只讀字段(私有)UpperCamelCase
  • 枚舉成員UpperCamelCase
  • 所有其他實體UpperCamelCase