自己總結的C#編碼規範--3.特定情境下的命名最佳實務

來源:互聯網
上載者:User

標籤:des   style   color   使用   os   io   for   cti   

  • 特定情境下的命名最佳實務
    • 命名空間
    1. 要使用PascalCasing,並用點號來分隔名字空間中的各個部分。

      如Microsof.Office.PowerPoint

    2. 要用公司名作為命名空間的首碼,這樣就可以避免與另外一家公司使用相同的名字。
    3. 要用穩定的,與版本無關的產品名稱作為命名空間的第二層
    4. 不要使用公司的組織架構來決定命名空間的階層,因為內部組織圖經常改變。
    5. 不要用相同的名字來命名命名空間和該空間內的類型。

      例如,不要先將命名空間命名為Debug,然後又在該空間中提供Debug類。大部分編譯器包括VS要求使用者在這樣的類型前加上完整的限定符。

    • 要讓介面的名字以字母I開頭

如IComponet,IDisposable 大家一看就知道是介面。

同時要確保如果一個類是一個介面的標準實現,那麼這個類和介面應該只差一個"I"首碼。

  • 衍生類別的末尾使用基類名稱

例如,從 Stream 繼承的 Framework 類型以 Stream 結尾,從 Exception 繼承的類型以 Exception 結尾。

  • 泛型型別參數的命名
  1. 使用描述性的名字來命名泛型型別參數,並且在前面加上T首碼

    如下面都是很好的命名

    public delegate TOutput Converter<TInput, TOutput>(TInput from);

  2. 如果只有一個型別參數,可以只用一個字母T來表示泛型

    public class Nullable<T>

    public class List<T>

  3. 如果泛型參數有約束,那麼需要在泛型型別參數名中需要顯示出該約束

    public interface ISessionChannel<TSession> where TSession:ISession

  • 枚舉類型的命名
  1. 要用單數名詞而不是複數命名枚舉類型,如要用ConsoleColor而不是ConsoleColors

    public enum ConsoleColor

    {

    Red,

    Yellow,

    Blue

    }

  2. 不要給枚舉類型加"Enum"、"Flag"等尾碼。

    ColorEnum,ColorFlag都不好,因為本身就是枚舉,再加上就是沒有意義的重複 。

  • 要用動詞和動詞短語命名方法
  • 屬性的命名
  1. 要用名詞、名詞短語或形容詞來命名屬性
  2. 要用描述集合中具體內容的短語的複數形式來命名屬性集合,而不要用短語的單數形式加"List"、"Array"或"Collection"尾碼

    class BinaryTree

    {

    //Good Naming

    public NodeCollection Nodes { get; set; }

    //Bad Naming

    public NodeCollection NodesCollection { get; set; }

  3. 要用肯定性的短語命名布爾屬性。最好在前面選擇性的加入"Is"、"Can"、"Has"等首碼。

    CanSeek比CantSeek和Seekable都更準確和容易理解。

  • 事件的命名
  1. 要用動詞或動詞短語命名事件

    如: Clicked、Painting、DroppedDown 等等

  2. 要用現在進行時(ing)和過去式(ed)來賦予事件發生之前和之後的概念。而不是使用Before和After.

    如視窗關閉前發生的close事件應該命名為Closing,而在視窗關閉之後發生的應該命名為Closed.

  • 欄位的命名
    1. 禁止使用執行個體的公有欄位和受保護欄位,請使用屬性代替。

    Tips:在VisualStudio中輸入"prop"可快速建立外部可修改的屬性,輸入"propg"可快速建立不允許外部修改的屬性。如:

//propg

public int NodesCount { get; private set; }

//prop

public List<BinaryNode> Nodes { get; set; }

  1. 一般只使用靜態欄位
  2. 要使用名詞、名詞短語或形容詞命名欄位
  3. 不要給欄位加首碼如"g_"、"s_"來表示靜態欄位。因為欄位和屬性是非常相似的,所以要遵循相同的命名規範。
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.