編碼規范參考
我本人不太推薦制定過細的編碼規范。制定編碼規范是為了增強代碼的可讀性,畢竟代碼的結構才是主要關注問題,所以我的編碼規范還是比較簡短的。里面只是對可能會破壞編碼風格的行為進行約束,而沒有細化到“空行”甚至“空格”的級別。
編碼規范
一 命名空間
<公司名稱>.(<產品名稱>|<相關技術>)[.<用途>] [.<子命名空間>]
二 代碼風格
- 花括號“{}”不允許省略,即使只有一段代碼。
- 不允許省略訪問修飾符。
- 類型默認是密封的。
- 不允許公開字段。
- 使用括號“()”來強調運算符優先級。
三 命名規范
(一) 類、結構和接口的命名
- 使用名詞或名詞短語。
- 使用Pascal方式。
- 在接口名稱前加上前綴“I”。
- 考慮在派生類末尾使用基類的名字。
- 如果該類僅僅為了實現某個接口,那么請保持其與接口命名的統一。
- 如果從.NET 框架中存在的類型派生的類型,應該遵循以下規范:
基類 | 派生類 |
System.Attribute | 要給自定義的特性添加“Attribute”后綴 |
System.Delegate | 要給用於事件處理的委托添加“EventHandler”后綴
要給用於事件處理之外的那些委托添加“Callback”后綴 不要給委托添加“Delegate”后綴 |
System.EventArgs | 要添加“EventArgs”后綴 |
System.Exception | 要添加“Exception”后綴 |
IDictionary,IDictionary<T,V> | 要添加“Dictionary”后綴 |
IEnumerable,ICollection,IList,
IEnumerable,ICollection,IList |
添加“Collection”后綴 |
System.IO.Stream | 添加“Stream”后綴 |
CodeAccessPermission,IPermission | 添加“Permission”后綴 |
(二) 成員的命名
成員 | 大小寫 | 規范 |
方法 | Pascal(公開)、Camel(私有) | 用動詞或動詞短語命名 |
屬性 | Pascal | 用名詞、名詞短語或形容詞來命名
集合屬性應該使用復數形式,而不是添加后綴 用“Is”、“Can”、“Has”等表示布爾屬性 可以用屬性的類型名來命名屬性 |
事件 | Pascal | 使用動詞或動詞短語來命名事件
用現在時和過去時來區分前置和后置事件 |
字段 | Camel(私有) | 要用名詞、名詞短語或形容詞來命名
不要加任何前綴 |
(三) 參數的命名
- Camel風格。
- 要使用left和right來命名重載的二元操作符的參數——如果參數沒有具體的含義。
- 要使用value來命名重載的一元操作符的參數——如果參數沒有具體的含義。
- 不要在參數中使用數字編號。
- 盡量使用描述性的名字命名泛型類型參數,並在前面使用“T”前綴。
(四) 常量、變量的命名
- 常量——所有單詞大寫並用“_”分隔。
- 局部變量——Camel風格。
(五) 枚舉的命名
- Pascal風格。
- 使用名詞的復數形式來命名標記枚舉。
- 不要添加“Enum”或“Flag”后綴。
- 不要給枚舉類型值的名字加前綴。
(六) 資源的命名
- Pascal風格。
- 僅使用字母、數字和下划線。
- 在命名異常消息的資源時,資源標識符應該是異常類型名加上簡短的異常標識符。
(七) 數據庫命名
- 表——“模塊名_表名”。
- 字段——bool類型用“Is”、“Can”、“Has”等表示;日期類型命名必須包含“Date”;時間類型必須包含“Time”。
- 存儲過程——使用“proc_”前綴。
- 視圖——使用“view_”前綴。
- 觸發器——使用“trig_”前綴。
(八) XML命名
節點名稱使用Pascal風格,屬性名稱使用Camel風格。
四 注釋
- 對接口和復雜代碼塊必須進行注釋。
- 修改代碼時保持注釋同步。
- 未完成的功能使用TODO標記。
- 修改他人代碼時要先注釋對方代碼,並寫明修改原因,不允許隨便刪除他人代碼。
- 發布前移除無用注釋。
五 異常處理
- 原則上只允許顯示拋出InvalidOperationException、ArgumentException、ArgumentNullException和ArgumentOutOfRangeException四種異常類型。
- 在自定義異常時,必須使用VS提供的代碼模板來創建自定義異常。