csharp-stylelisted
Install: claude install-skill CloudyWing/ai-dotfiles
# C# Code Style
本 Skill 收錄 C# 風格規範中 `.editorconfig` 無法約束的部分。可由 `.editorconfig` 與內建 analyzer 約束的項目(PascalCase / camelCase 大小寫、Interface `I` 前綴、file-scoped namespace、`using` 排序、存取修飾詞、大括號位置、強制大括號、空格、縮排等)一律以專案 `.editorconfig` 為準,不在此重複條列。
## 套用範圍
- **既有專案**:以鄰近檔案的既有慣例為準,既有慣例優先於本 Skill。本 Skill 僅在既有專案無可識別慣例時,作為新增檔案的風格基準。
不主動將既有程式碼「修正」成為 Skill 的風格,以避免製造無謂的 diff 雜訊。
## 命名
- **縮寫**:縮寫的首字母大小寫依所在情境採 PascalCase 或 camelCase,其餘字母規則如下:
- 3 個字母以上(縮略字、縮寫皆適用):第二個字母起一律小寫,如 `Sql`、`Xml`。
- 2 個字母的縮略字(Acronym,取數個單字的首字母組成):全大寫或全小寫,如 `IO`、`io`。
- 2 個字母的縮寫(Abbreviation,由單一單字取字母組成):第二個字母起小寫,如 `Id`、`id`。
- **泛型型別參數**:單一且可為任意型別時使用 `T`;有多個型別參數,或對型別有具體語意要求時,使用 `T` 開頭的描述性單字,如 `TKey`、`TValue`、`TResult`。
- **布林成員命名**:布林型別的屬性、欄位與回傳布林的方法,命名要讀起來像「是/否」斷言,預設加 `Is`、`Has`、`Can`、`Should` 前綴,如 `IsActive`、`HasStock`、`CanCancel`。
- 例外:對應 BCL 既有成員,或沿用框架慣例(如 UI 控制項的 `Enabled`、`Visible`)時,從其慣例,不強制改加前綴。
- 同一型別內語意相近的布林成員採一致形式。
- **private 欄位前綴**:預設不加 `_`、`m_`、`s_` 前綴。專案 `.editorconfig` 或既有慣例另有指定時,從其規定。
- **類別後綴**:
- 擴充方法(Extension Methods)的靜態類別以 `Extensions` 結尾(如 `StringExtensions`)。例外:Minimal API 的 Endpoint 映射類別以 `XxxEndpoints` 命名(如 `ProductEndpoints`)。
- 靜態工具類別以 `Utils` 結尾(如 `StringUtils`)。
- 非靜態工具類別且無其他更適合的領域驅動命名時,允許以 `Helper` 結尾(如 `ViewHelper`)。
- **Enum**:標註 `[Flags]` 的 Enum 使用複數命名(如 `FileAccessRights`);一般 Enum 使用單數。
## 結構與排序
- **單檔單型別**:每個 `.cs` 檔案只能包含一個頂層型別(Class、Interface、Enum、Struct、Record)。Inner Class 不受此限,允許巢狀於父類別中。
- **成員型別順序**:型別成員依下列順序排列:Fields、Constructors、Finalizer、Delegates、Events、Prope