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

C# 編碼規範與最佳實踐:從命名慣例到異常處理的完整指南

     編輯:關於C語言

前言:為何要追求「高效代碼」?

「能跑起來」只是門檻,「高效、可維護、專業」才是資深工程師的分水嶺。本文彙整業界公認的 C# 編碼規範,涵蓋命名、排版、架構設計、異常處理與註解藝術,助你從「寫代碼」進化為「造產品」。

一、命名慣例:代碼的第一語言

1. 大小寫規範

  • PascalCase:所有單字首字母大寫。適用於:類別、介面、方法、屬性、事件、命名空間。
  • camelCase:首單字小寫,後續單字首字母大寫。適用於:區域變數、方法參數、私有欄位。

2. 具體命名規則

元素慣例範例
類別/結構/介面PascalCase,名詞或名詞片語Customer, IComparable
方法PascalCase,動詞或動詞片語CalculateTotal(), SaveChanges()
屬性/公開欄位PascalCase,名詞/形容詞FirstName, IsActive
區域變數/參數camelCase,語意清晰totalCount, userName
常數PascalCase(公開)或 UPPER_SNAKE_CASE(私有)MaxRetryCount, DEFAULT_TIMEOUT

3. 禁忌清單

  • ❌ 匈牙利命名法(m_strName, nAge)
  • ❌ 縮寫(nam, addr, sal)
  • ❌ 單字母變數(除迴圈計數器 i, j 外)
  • ❌ 下劃線 _ 分隔單字

二、排版與結構:視覺秩序即邏輯秩序

1. 縮進與空白

  • 使用 Tab 縮進(非空格),保持團隊一致。
  • 運算子、括號、逗號前後各保留一空格:if (x == y) { ... }。
  • 大括號 {} 獨佔一行(K&R 風格或 Allman 風格二擇一,團隊統一即可)。

2. 方法與類別組織

  • 單一檔案 300-400 行 內,超過即拆分類別。
  • 單一方法 1-25 行,超過 25 行強制重構拆分。
  • 方法之間保留 一個空行,邏輯區塊內部適當留白。
  • 方法名須「見名知意」:SavePhoneNumber() 優於 SaveData() + 註解。

3. 單一職責原則(SRP)落地

// ❌ 違反 SRP:一個方法做兩件事
void SaveAddress(string address, string email) {
    SaveToDatabase(address);
    SendEmail(email);
}

// ✅ 拆分為兩個單一職責方法
void SaveAddress(string address) { /* ... */ }
void NotifySupervisor(string email) { /* ... */ }

三、型別與資源管理

  • 優先使用 C# 關鍵字別名:int 而非 Int32,string 而非 String,object 而非 Object。
  • 拒絕 Magic Numbers:改用 const 或 enum。
  • 字串常數外部化至資源檔,支援多語系與免重編修改。
  • 欄位預設 private,對外暴露屬性;避免跨方法共享成員變數,改用區域變數 + 參數傳遞。
  • 路徑處理:絕不硬編碼 C:\,使用相對路徑、Path.Combine、AppDomain.CurrentDomain.BaseDirectory。

四、錯誤處理與使用者體驗

1. 異常處理鐵律

  • ❌ 吞噬異常:catch (Exception) { return null; } —— 這會掩蓋 Bug。
  • ✅ 精準捕捉:catch (FileNotFoundException ex)。
  • ✅ 記錄完整堆疊:時間、類別、方法、參數、堆疊追蹤。
  • ✅ 使用者訊息「具體 + 可行動」:
    "更新資料庫失敗。請確認登入帳號密碼是否正確。" 而非 "錯誤發生"。
  • 應用程式層級(AppDomain.UnhandledException、TaskScheduler.UnobservedTaskException)統一捕捉未處理異常,記錄日誌後友善提示並決定是否關閉。
  • try-catch 區塊越小越好,精準包裹可能拋出異常的單一操作。

2. 自訂異常

繼承 ApplicationException(非 SystemException),命名以 Exception 結尾,提供建構子鏈。

五、註解哲學:好代碼勝過壞註解

  • 🚫 逐行註解、變數宣告註解 —— 命名若清晰,這些是噪音。
  • ✅ 「為什麼」而非「做什麼」:複雜演算法、業務規則、非直觀決策、TODO/HACK 標記。
  • ✅ 公共 API 必寫 XML 文件註解(///),支援 IntelliSense 與文件產生器。
  • ✅ 拼字、標點、語法正確;註解與代碼同步更新,過期註解比無註解更害人。

六、總結檢查清單

  1. 命名是否 Pascal/camel 規範?無縮寫?
  2. 方法是否 < 25 行?職責單一?
  3. 是否消除 Magic Number、硬編碼路徑?
  4. 異常是否精準捕捉、完整記錄、友善提示?
  5. 註解是否解釋「Why」而非「What」?

將規範內化為肌肉記憶,代碼品質自會水到渠成。專業,始於細節。

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