C#項目代碼規範 前言 小菜就是小菜,幾個人搞出來的項目,讓公司大牛稍微看了下,最後送出了慘不忍睹四個字。命名各種各樣,五花八門,大寫英文、小寫英文、大寫拼音、小寫拼音、英文和拼音組合、字母和特殊字元(下劃線等)組合。這樣的項目代碼要是讓人來維護或者添加功能、查找bug會頭痛欲裂。也沒辦法誰叫咱們是 ...
C#項目代碼規範
前言
小菜就是小菜,幾個人搞出來的項目,讓公司大牛稍微看了下,最後送出了慘不忍睹四個字。命名各種各樣,五花八門,大寫英文、小寫英文、大寫拼音、小寫拼音、英文和拼音組合、字母和特殊字元(下劃線等)組合。這樣的項目代碼要是讓人來維護或者添加功能、查找bug會頭痛欲裂。也沒辦法誰叫咱們是小菜呢?而且程式員最頭疼的事:http://kb.cnblogs.com/page/192017/這篇知識博文里,最終的結果居然是命名。所以……
於是結合現有項目,通過博客園查看各種博客文章,進行了一下總結。當然這樣做肯定是有不少好處的。
1.方便代碼的交流和維護。
2.不影響編碼的效率,不與大眾習慣衝突。
3.使代碼更美觀、閱讀更方便。
4.使代碼的邏輯更清晰、更易於理解。
在C#中通常使用的兩種編碼方式如下
Camel(駝峰式): 大小寫形式-除了第一個單詞,所有單詞第一個字母大寫,其他字母小寫。
Pascal(帕斯卡): 大小寫形式-所有單詞第一個字母大寫,其他字母小寫。
本文的C#代碼規範主要參考的是大神的規範:http://www.cnblogs.com/JimmyZhang/archive/2013/06/05/3118936.html,當然還有其他的,在此就不一一進行列舉了。
C#代碼規範
1、 類型(類、結構、委托、介面)、欄位、屬性、方法、事件的命名
優先考慮使用英文(儘量使用英文),如果實在沒有合適的英文進行描述,可以使用拼音,使用中文是不符合要求的。
2、不使用縮寫
所有類型、欄位、屬性、方法、事件儘量不使用縮寫,包括大家熟知的縮寫,例如msg。
3、不使用單個字母的變數
不使用單個字母的變數, 像 i、m、n,使用index等來替換,用於迴圈迭代的變數除外。
4、用Tab作為縮進,並設置縮進大小為4
5、 註釋
類型、屬性、事件、方法、方法參數,根據需要添加註釋。
如果類型、屬性、事件、方法、方法參數的名稱已經是自解釋了,不需要加註釋;
否則需要添加註釋。
6、類型名稱和源文件名稱一致
當類型命名為Product時,其源文件命名只能是Product.cs。
7、所有命名空間、類型名稱使用Pascal風格
8、本地變數、方法參數名使用Camel風格(不使用下劃線)
紅色標記的為使用Camel風格的變數或者方法參數
9、在一個類中,各個方法需用一空行(最好是一個空行)
10、避免使用大文件。如果一個文件里的代碼超過300-400行,必須考慮將代碼分開到不同的類中。同時避免寫太長的方法,如果一個方法代碼過長(暫時沒有明確指出方法的行數),應該考慮將其分解為不同的方法
11、一個方法只完成一個任務。不要把多個任務組合到一個方法中,即使那些任務非常小
12、調用類型成員內部其他成員,需加this,調用父類成員需加base
13、不在代碼中使用具體的路徑和驅動器名。 使用相對路徑,並使路徑可復用
14、不要“捕捉了異常卻什麼也不做“。如果隱藏了一個異常,你將永遠不知道異常到底發生了沒有
15、如果if語句塊的內容只有一行,可以不加花括弧,並且最好和if語句位於同一行
16、類型內部的私有欄位和受保護欄位,使用Camel風格命名,但加“_”首碼
17、類型成員的排列順序
類型成員的排列順序自上而下依次為:
欄位:私有欄位、受保護欄位
屬性:私有屬性、受保護屬性、公有屬性
事件:私有事件、受保護事件、公有事件
構造函數:參數數量最多的構造函數,參數數量中等的構造函數,參數數量最少的構造函數
方法:重載方法的排列順序與構造函數相同,從參數數量最多往下至參數最少
18、委托和事件的命名
委托以EventHandler作為尾碼命名,例如 SalesOutEventHandler。
事件以其對應的委托類型,去掉EventHandler尾碼,並加上On首碼構成。
示例代碼如下:
19、返回bool類型的方法、屬性的命名
如果方法返回的類型是bool類型,則其首碼為Is,例如:IsHidden。
如果某個屬性的類型為bool類型,則其首碼為Can,例如:CanHidden。
20、常見集合尾碼類型命名
凡符合下表所列的集合類型,應添加相應的尾碼。
21、常見欄位、屬性命名
欄位、屬性種類比較繁雜,因此僅列出最常用的幾項
總結
本文的規範,將會在接下來的新項目中進行參考使用,使用過程中遇到的問題或者意見,將會反饋到本文,也恭請各位客官前來參閱,共同優化。