熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

C#編碼規范(一)命名約定與風格

2013-11-13 10:18:54  來源: .NET編程 

  (C# Coding Standard有多個版本本文根據較新的版本翻譯
    對於第我習慣直接用camel風格

  命名約定與風格
    采用Pascal風格命名類型方法和常量
    public class SomeClass
    {
       const int DefaultSize = ;
       public void SomeMethod()
       {}
    }采用camel風格命名局部變量和方法參數
    void MyMethod(int someNumber)
    {
       int number;
    } 命名接口時采用I作為前綴
    interface IMyInterface
    {} 命名私有成員變量時采用m_作為前綴m_後面的部分采用Pascal風格
    public class SomeClass
    {
       private int m_Number;
    } 自定義特性類采用Attribute作為前綴
    自定義異常類采用Exception作為前綴
    命名方法時使用動賓結構短語例如ShowDialog()
    有返回值的方法應該有能描述其返回值的名稱例如GetObjectState()
    采用描述性的變量名
        )避免單字符的變量名例如i或t而是采用index或temp代替
        )對public和protected成員避免使用匈牙利命名法
        )不要使用縮寫(例如將number縮寫為num)
    總是使用C#預定義的類型而不是使用System命名空間中的別名例如
    object NOT Object
    string NOT String
    int    NOT Int 類型名稱的首字母通常使用大寫 當處理NET類型Type時保留後綴Type
    // 正確
    public class LinkedList<KT>
    {}
    // 避免
    public class LinkedList<KeyTypeDataType>
    {}
    使用有意義的命名空間例如產品名或公司名
    避免使用完全限定的類型名稱使用using語句代替
    避免在命名空間內使用using語句
    所有框架的命名空間都組合在一起並放在自定義或第三方的命名空間下

  using System;
    using SystemCollectionsGeneric;
    using SystemComponentModel;
    using SystemData;
    using MyCompany;
    using MyControls;
    使用委托推斷而不是顯式實例化委托

  delegate void SomeDelegate();
    public void SomeMethod()
    {}
    SomeDelegate someDelegate = SomeMethod;
    堅持嚴格的縮進不要使用制表符或非標准的縮進如一個空格推薦是三個或四個空格並且值應該是通過統一的
    注釋縮進和其代碼在同一水平上
    所有注釋要經過拼寫檢查拼錯注釋表示開發草率
    所有成員變量要聲明在頂部空一行分開屬性或方法

  public class MyClass
    {
       int m_Number;
       string m_Name;

  public void SomeMethod()
       {}
       public void SomeMethod()
       {}
    } 聲明本地變量盡可能接近第一次使用
    文件名應該體現它包含的類
    當使用分部類型且分別分配到一個文件時每個文件以邏輯部分命名例如 //In MyClasscs
    public partial class MyClass
    {}
    //In MyClassDesignercs
    public partial class MyClass
    {} 允許花括號({)放置在新一行
    匿名方法仿照普通方法的代碼布局排列和委托聲明(放置一個開放花括號在新一行) delegate void SomeDelegate(string someString);
    //Correct:
    void InvokeMethod()
    {
       SomeDelegate someDelegate = delegate(string name)
                                   {
                                      MessageBoxShow(name);
                                   };
       someDelegate(Juval);
    }
    //Avoid
    void InvokeMethod()
    {
       SomeDelegate someDelegate = delegate(string name){MessageBoxShow(name);};
       someDelegate(Juval);
    }沒有參數的匿名方法使用空的圓括號只有在匿名方法可能被使用在任何委托上時省略括號 delegate void SomeDelegate();
    //正確
    SomeDelegate someDelegate = delegate()
                                 {
                                    MessageBoxShow(Hello);
                                 };
    //避免
    SomeDelegate someDelegate = delegate
                                 {
                                    MessageBoxShow(Hello);
                                 }; Lambda表達式仿照普通方法的代碼布局排列和委托聲明省略變量類型和類型推斷依賴也使用圓括號 elegate void SomeDelegate(string someString);

  SomeDelegate someDelegate = (name)=>
                                {
                                   TraceWriteLine(name);
                                   MessageBoxShow(name);
                                };當它們包含一個簡單的語句時只使用內嵌(inline)的Lambda表達式對內嵌的表達式避免要花括號或rerurn語句的多重聲明省略圓括號: delegate void SomeDelegate(string someString);

  void MyMethod(SomeDelegate someDelegate)
    {}

  //正確:
    MyMethod(name=>MessageBoxShow(name));

  //避免
    MyMethod((name)=>{TraceWriteLine(name);MessageBoxShow(name);});


From:http://tw.wingwit.com/Article/program/net/201311/13227.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.