Pascal
將每個單詞的第一個字符大寫、遇到兩個字母的首字母縮略詞時,兩個字母都要大寫
命名空間:使用公司名作為前綴、在第二級名稱中使用穩定的與版本無關的產品名稱
類型:名詞或名詞短語命名
結構:名詞或名詞短語命名
接口:形容詞短語或偶爾用名詞或名詞短語命名接口,在接口名稱前加上字母I作為前綴
方法:謂詞或謂詞短語
屬性:名詞短語或形容詞
事件:謂詞或謂詞短語來命名事件,現在時態和過去時態讓事件有先后的概念
字段:名詞、名詞短語、形容詞來命名字段
枚舉:使用單數形式的類型名稱,除非枚舉值是位域
Camel:約定僅用於參數名稱,將除第一個單詞之外的每個單詞的第一個字符大寫
參數:描述性參數名稱
類和結構設計
考慮類型的實例比較小並且通常生存期較短或者通常嵌入在其他對象中,則定義結構
避免定義一個結構,除非具有所有一下特征:
1.它邏輯上表示單個值,類似於基元類型(int double等等)
2.它的實例大小小於16字節
3.它是不可變的
4.它不會頻繁裝箱
在所有其他情況下,應將類型定義為類
抽象類設計
請勿在抽象類型中定義公共或受保護的內部構造函數
請在抽象類中定義受保護的或內部構造函數
請至少提供一種繼承自你交付的每個抽象類的具體類型
接口設計
需要某些通用API受到包含值類型的一組類型的支持
需要在已繼承自其他類型的類型上支持其功能
至少提供一種作為接口的實現的類型
結構設計
確保所有實例數據設置為0、false、null的狀態是有效的
c#不允許結構具有默認構造函數
枚舉設計
務必將枚舉用於強類型參數、屬性和表示一組值集的返回值
務必首選使用枚舉而不是靜態常量
務必為簡單枚舉提供0值