寫程式其實也是有規矩在的,尤其是要團體協同開發的時候,如果每個人使用的規則都不一樣,那要求每個人看得懂別人的程式碼,真的是會要了人的命。
像是命名空間、類別、變數、檔案命名、控制項命名,其實都要去訂下命名的規則,對團隊來說才會容易溝通。
寫程式其實也是有規矩在的,尤其是要團體協同開發的時候,如果每個人使用的規則都不一樣,那要求每個人看得懂別人的程式碼,真的是會要了人的命。
像是命名空間、類別、變數、檔案命名、控制項命名,其實都要去訂下命名的規則,對團隊來說才會容易溝通。
當然,規則很多,我在這邊只先列出和比較基本的命名相關的規則;而關於完整的C#的程式撰寫規範建議,則可以參考MSDN上的設計方針,再配合FXCop做程式碼撰寫後的規範驗證。
以下為C#命名的一般原則:
- 使用Pascal( 如 : "VirtualDesign" )及Camel( 如 : "virtualDesign" )兩種命名方式,並建議避免使用分隔符號( 例如底線 "_" 或連字號 "-" )來做命名 - CA1702。
- 可讀性優先於簡潔性( CanScrollHorizontally 優於 ScrollableX ),並參考常用的命名( HorizontalAlignment 優於 AlignmentHorizontal )。
- 避免使用匈牙利命名法( 如 : "strName" ),並正確的使用前置及後置詞命名 - CA1720、CA1710。
- 正確的使用縮寫,縮寫字為兩個字母以內,則兩字皆為大寫( 如 : "IO" ),三個字以上,則使用Pascal命名規則( 如 : "Xml" ),且縮寫字不得高於五個字母 - CA1709。
物件命名原則:
種類 | 命名規則 | 範例 | 注意事項 |
---|---|---|---|
Project File | Pascal | Math.Algorithm.csproj | |
Source File | Pascal | RuleSetup.cs | 保持檔案名稱與Class名稱一致 |
Resource or Embedded File | Pascal | TestPicture.jpg | |
Namespace | Pascal | MyCompany.Wpf.Controls | 儘量使用"公司名稱.專案名稱|技術名稱.功能分類|子類別"做為命名準則 |
Class or Struct | Pascal | CustomAttribute | 使用名詞命名,並使用基底類別名稱做為後置詞 |
Interface | Pascal | ICustomer | 使用前置詞"I" |
Generic Class & Generic Parameter Type | Pascal | TKey,TValue | 使用前置詞"T"或"K" |
Method | Pascal | ValidateUser | 使用動詞作為開頭 |
Property | Pascal | Name | 避免使用"Get"或"Set"當前置詞 |
Field (Public, Protected, or Internal) | Pascal | Name | |
Field (Private) | Camel | _name | 字首加上底線做為區隔 |
Constant or Static Field | Pascal | Name | 與Field處理方式相同 |
Enum | Pascal | EncodeType | 裡面包含選項也是使用Pascal命名法 |
Delegate or Event | Pascal | public event EventHandler LoadPlugin | 全都使用 PascalCase |
Local Variable (inline) | Camel | string name | 避免使用單一字元和列舉的名稱 |
Parameter | Camel | public void Execute(string commandText, int iterations) |
其他注意事項: