首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 命名慣例與編碼規範完整指南:帕斯卡、駝峰、匈牙利命名法詳解

     編輯:關於C語言

良好的命名慣例是程式碼可讀性、可維護性的基石。C# 社群有明確、廣泛遵循的命名標準(Microsoft 官方指南、Framework Design Guidelines)。本文系統整理**帕斯卡命名法**、**駝峰命名法**、**匈牙利命名法**在 C# 中的定義、適用範圍、對照表與實務範例,助你寫出專業級程式碼。

三大命名法快速對照

命名法格式C# 主要用途範例
帕斯卡 (PascalCase)每單字首字母大寫**公用成員**:類別、介面、方法、屬性、事件、常數、命名空間、列舉值CustomerName, CalculateTotal, MaxConnections
駝峰 (camelCase)首單字小寫,其餘大寫**私有/區域**:區域變數、參數、私有欄位 (不建議加底線)customerName, totalAmount, maxConnections
匈牙利前綴(型態/用途) + 帕斯卡/駝峰**C# 不推薦** (僅少數 UI 控制項名稱慣例殘留)txtUserName, btnSubmit (WinForms 習慣)

C# 官方命名規範詳細規則

1. 大寫規則

  • 單字: 全大寫 (如 IO, XML, HTML) → XmlDocument, HtmlEncoder (Framework 指南建議**僅首字母大寫**,但兩字母縮寫慣用全大寫)。
  • 兩字母縮寫: 全大寫 (如 ID, OK) → UserId (帕斯卡) / userId (駝峰)。
  • 三字母以上: 帕斯卡式 (如 Json, Sql, Html)。

2. 各程式元素命名標準

元素慣例範例備註
命名空間帕斯卡MyCompany.Products.UtilsCompany.Technology.Feature
類別/結構/介面/列舉/委派帕斯卡Customer, IComparable, DayOfWeek介面慣加 I 前綴
公用/受保護欄位帕斯卡public int MaxRetries;**建議改用屬性**
屬性帕斯卡public string FirstName { get; set; }
方法帕斯卡public void SaveChanges()動詞或動詞片語
事件帕斯卡public event EventHandler Clicked;名詞/動詞片語,處理器加 Handler 後綴
常數帕斯卡public const int DefaultPort = 80;不加底線分隔
參數駝峰void Send(string emailAddress)
區域變數駝峰var userList = new List<User>();
私有/內部欄位駝峰 (+ 可選 _ 前綴)private int _retryCount; 或 retryCount**團隊統一即可**,_ 前綴助辨識
型別參數帕斯卡 + T 前綴TEntity, TKey, TValue單字母 T 亦可

3. 特殊情境

  • 非同步方法: 後綴 Async → GetDataAsync()。
  • 布林屬性/方法: 加 Is, Can, Has, Should → IsValid, CanExecute。
  • 集合屬性: 複數名詞 → Orders, Items (而非 OrderList)。
  • 介面實作類別: 同名去 I → IUserService → UserService。

為何 C# 棄用匈牙利命名法?

  1. 型別資訊已在 IDE 顯示:滑鼠懸停即知型別,前綴冗餘。
  2. 重構時維護成本高:改型別須改名稱,易遺漏。
  3. 可讀性降低:strUserName 不如 userName 自然。
  4. 泛型/匿名型別下失效:var items = new List<string>(); 前綴何用?

唯一例外:WinForms/WPF 控制項欄位命名慣例 (txtName, btnSave, dgvUsers) 仍廣泛使用,因設計器產生代碼、事件綁定慣例所致。新專案建議改用純語意命名 (nameTextBox, saveButton)。

.editorconfig 強制團隊風格

在專案根目錄加入 .editorconfig,IDE 即可即時提示/自動修正:

root = true

[*.cs]
# 命名風格
dotnet_naming_style.pascal_case.capitalization = pascal_case
dotnet_naming_style.camel_case.capitalization = camel_case

# 公用成員必須帕斯卡
dotnet_naming_rule.public_members_must_be_pascal.symbols = public_members
dotnet_naming_rule.public_members_must_be_pascal.style = pascal_case
dotnet_naming_rule.public_members_must_be_pascal.severity = warning

# 參數/區域變數必須駝峰
dotnet_naming_rule.locals_parameters_camel.symbols = locals_parameters
dotnet_naming_rule.locals_parameters_camel.style = camel_case
dotnet_naming_rule.locals_parameters_camel.severity = warning

# 符號定義
dotnet_naming_symbols.public_members.applicable_kinds = property,method,field,event,delegate
dotnet_naming_symbols.public_members.applicable_accessibilities = public,internal,protected,protected_internal
dotnet_naming_symbols.public_members.required_modifiers = readonly

dotnet_naming_symbols.locals_parameters.applicable_kinds = local,parameter

結語

**命名是給人看的,順便給編譯器過目。** 遵循 C# 慣例:

  • **公用介面用帕斯卡** → 清楚表達契約。
  • **內部實作用駝峰** → 輕快自然。
  • **拒絕匈牙利** → 讓型別系統做它的事。
  • **善用 .editorconfig** → 團隊零爭辯,專注業務邏輯。

統一命名風格,是專業團隊最低成本、最高回報的品質投資。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved