本文為 C# 程式碼規範第一部分,建立統一的檔案組織、程式碼排版、註解風格與命名慣例,提升團隊協作效率與程式碼可維護性。
第一章 概述
1.1 規範制定原則
- 便於程式碼交流與維護
- 不影響編碼效率,不違背通用習慣
- 程式碼美觀、閱讀便利
- 邏輯清晰、易於理解
1.2 命名大小寫術語
- PascalCase:每個單字首字大寫(如
BackColor)
- camelCase:首字小寫,後續單字首字大寫(如
backColor)
1.3 檔案命名與組織
- 檔名採 PascalCase,副檔名小寫(.cs)
- 檔案標頭必含版權、檔名、功能描述、建立/修改標記(拼音/英文+日期)
- 修改處需加註修改標記
第二章 程式碼外觀
2.1 行寬
控制在 110 字元以內,原則不超過螢幕寬度。
2.2 換行規則
- 逗號、括號後換行
- 運算子前換行
- 規則 1 優先於規則 2
2.3 縮排
每層 1 個 Tab(4 空格),VS 設定「插入空格」而非 Tab 字元。
2.4 空行
- 介面/類別/列舉定義間:兩行
- 方法/屬性/邏輯區塊/變數宣告/回傳陳述式間:一行
- 註解與被註解程式碼不空行,與其他程式碼空一行
- 禁止無規則大量空行
2.5 空格
- 關鍵字與左括號間加空格(
while (true)),方法名與左括號不加
- 參數逗號後加空格
- 二元運算子前後加空格,一元運算子/++/-- 不加
for 陳述式三段式間加空格
2.6 大括號
- 左大括號另起一行並與關鍵字/方法名對齊
- 左右大括號垂直對齊
- 左大括號通常獨佔一行
if/while/do 必須加大括號,即使空白或單行
- 右大括號建議加註對應起點註解
第三章 程式註解
3.1 註解原則
- 修改程式碼同步更新註解
- 每個常式開頭提供標準註解樣本(用途、假設、限制)
- 避免行尾註解,變數宣告除外(對齊製表位)
- 避免雜亂裝飾性註解,善用空行分隔
- 發布前移除暫時/無關註解
- 複雜程式碼優先重構而非加註解
- 完整句子、闐明意圖、避免歧義
- 編碼時同步寫註解
- 統一標點與結構風格
- 修改處加註修改標記
- 右大括號後註解對應起點
3.2 文件化註解 (XML)
介面、類別、方法、屬性、欄位必須使用 XML 標籤(/// <summary>),支援自動產生文件。
3.3 區塊註解
用於廢棄程式碼或暫時屏蔽,格式含修改標記與原因。
3.4 單行註解
方法內程式碼說明、變數宣告、區塊結尾對應註解。
第四章 宣告
4.1 每行一宣告
按字母排序:int level; int size; 推薦,int x, y; 不推薦。
4.2 初始化
宣告時即初始化。
4.3 位置
區塊開頭宣告,避免首次使用時才宣告(for 迴圈計數器除外)。避免跨層級同名變數。
4.4 類別與介面宣告
- 方法名與左括號無空格
- 左大括號另起一行對齊
- 方法間一空行
4.5 欄位宣告
- 避免 public/protected 實例欄位,改用屬性存取子
- 私有欄位配合 get/set 屬性,利於版本控制與擴充
第五章 命名規範
5.1 命名原則
- 名稱表達「是什麼」而非「如何做」
- 避免曖昧縮寫,適度長度,表達力優先
- 互補對:min/max、begin/end、open/close
- 布林變數含 Is(如
fileIsFound)
- 狀態變數避免 Flag,用描述性名稱
- 短生命週期變數亦用有意義名稱,僅迴圈索引用 i/j
- 避免魔術數字/字串,用具名常數
- 檔名與類別名一致,一檔一類
5.2 大小寫規則對照表
| 識別項 | 大小寫 | 範例 |
| 類別 | PascalCase | AppDomain |
| 介面 | PascalCase + I 前綴 | IDisposable |
| 方法 | PascalCase | ToString |
| 屬性 | PascalCase | BackColor |
| 參數 | camelCase | typeName |
| 區域變數 | camelCase | backColor |
| 私有/受保護欄位 | camelCase | redValue |
| 公共/靜態欄位 | PascalCase | RedValue |
| 常數 | PascalCase | MaxCount |
5.3 縮寫使用
- 避免非通用縮寫(
GetWin → GetWindow)
- 通用縮寫可用(UI、OLAP、HTML)
- 兩字元縮寫全大寫(
System.IO),超過兩字元用 Pascal/camelCase
5.4-5.18 各類識別項命名細則
- 命名空間:
Company.Technology[.Feature][.Design],PascalCase
- 類別:名詞/名詞片語,PascalCase,避免前綴/底線
- 介面:名詞/形容詞,I 前綴,PascalCase
- Attribute:類別名加 Attribute 後綴
- Enum:型別與值皆 PascalCase,避免 Enum 後綴、避免指定底層型別
- 參數:camelCase,描述含義非型別
- 方法:動詞/動詞片語,PascalCase
- 屬性:名詞/名詞片語,PascalCase,考慮與型別同名
- 事件:動名詞表達前狀態,過去式表達後狀態,EventHandler 後綴,EventArgs 後綴
- 常數:PascalCase
- 欄位:私有/受保護 camelCase,公共 PascalCase,拼寫完整單字
- 靜態欄位:PascalCase,建議改用靜態屬性
- 集合:建議複數名稱
- 泛型:無額外語境用 T
- 避名衝突:避開 .NET 框架命名空間名稱與關鍵字
- 上一篇文章: C# 程式碼撰寫規範(下):陳述式、控制項命名、程式結構與例外處理完整標準
- 下一篇文章: 安全性程式碼審查實戰測驗:10 大經典漏洞挑戰你的安全 IQ
Copyright ©
程式碼之家 All Rights Reserved