寫程式其實也是有規矩在的,尤其是要團體協同開發的時候,如果每個人使用的規則都不一樣,那要求每個人看得懂別人的程式碼,真的是會要了人的命。
像是命名空間、類別、變數、檔案命名、控制項命名,其實都要去訂下命名的規則,對團隊來說才會容易溝通。

當然,規則很多,我在這邊只先列出和比較基本的命名相關的規則;而關於完整的C#的程式撰寫規範建議,則可以參考MSDN上的設計方針,再配合FXCop做程式碼撰寫後的規範驗證。

以下為C#命名的一般原則

  • 使用Pascal( 如 : “VirtualDesign” )及‘Camel’( 如 : “virtualDesign” )兩種命名方式,並建議避免使用分隔符號( 例如底線 “_” 或連字號 “-“ )來做命名 - CA1702
  • 可讀性優先於簡潔性( CanScrollHorizontally 優於 ScrollableX ),並參考常用的命名( HorizontalAlignment 優於 AlignmentHorizontal )。
  • 避免使用匈牙利命名法( 如 : “strName” ),並正確的使用前置及後置詞命名 - CA1720CA1710
  • 正確的使用縮寫,縮寫字為兩個字母以內,則兩字皆為大寫( 如 : “IO” ),三個字以上,則使用Pascal命名規則( 如 : “Xml” ),且縮寫字不得高於五個字母 - CA1709

C#物件命名原則

種類 命名規則 範例 注意事項    
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 全都使用 Pascal 命名規則    
Local Variable (inline) Camel string name 避免使用單一字元和列舉的名稱    
Parameter Camel public void Execute(string commandText, int iterations)      

其他注意事項:

  • 不要在列舉項目中使用”Reserved”做為命名 - CA1700
  • 不要使用型別名稱做為列舉值的前置字元 - CA1712

Comments