編碼規範對於程式設計師而言尤為重要,有以下幾個原因:
1.一個專案的生命週期中,80%的花費在於維護;
2.幾乎沒有任何一個專案,在其整個生命週期中,均由最初的開發人員來維護;
3.命名規範可以改善專案的可讀性,可以讓程式設計師儘快而徹底地理解新的程式碼;
4.如果你將原始碼作為產品釋出,就需要確任它是否被很好的打包並且清晰無誤,比如你已構建的其它任何產 品。 為了執行規範,每個軟體開發人員必須一致遵守編碼規範。
常見的命名規則我們都知道:
Pascal 規則:
每個單詞開頭的字母大寫(如 TestCounter).
Camel 規則:
除了第一個單詞外的其他單詞的開頭字母大寫. 如. testCounter.
Upper 規則:
僅用於一兩個字元長的常量的縮寫命名,超過三個字元長度應該應用Pascal規則
例如:
public class Math
{
public const PI = ...
public const E = ...
public const FeigenBaumNumber = ...
}
針對C#開發者,整理了15條命名規範!
1.類命名規則
類名應該為名詞及名詞短語,儘可能使用完整的詞.
使用Pascal規則
不要使用類字首 - 不要使用下劃線字元 (_)。
有時候需要提供以字母 I 開始的類名稱,雖然該類不是介面。只要 I 是作為類名稱組成部分的整個單詞的第一個字母,這便是適當的。例如,類名稱 IdentityStore 就是適當的。
在適當的地方,使用複合單詞命名派生的類。派生類名稱的第二個部分應當是基類的名稱。例如,ApplicationException 對於從名為 Exception 的類派生的類是適當的名稱,原因是 ApplicationException 是一種 Exception。請在應用該規則時進行合理的判斷。例如,Button 對於從 Control 派生的類是適當的名稱。儘管按鈕是一種控制元件,但是將 Control 作為類名稱的一部分將使名稱不必要地加長。
2.介面命名規則
介面名稱應該為名詞及名詞短語或者描述其行為的形容詞,儘可能使用完整的詞. (Example IComponent or IEnumberable)
使用Pascal規則
使用字元I為字首,並緊跟一個大寫字母(即介面名的第一個字母大寫)
複製程式碼程式碼如下:
interface ICompare
{
int Compare();
}
3.列舉命名規則
- 對於 Enum 型別和值名稱使用 Pascal 大小寫。
- 少用縮寫。
- 不要在 Enum 型別名稱上使用 Enum 字尾。
- 對大多數 Enum 型別使用單數名稱,但是對作為位域的 Enum 型別使用複數名稱。
- 總是將 FlagsAttribute 新增到位域 Enum 型別。
4.變數命名
- 在簡單的迴圈語句中計數器變數使用 i, j, k, l, m, n
- 使用 Camel 命名規則
5. 方法命名
使用Pascal規則
對方法名採用一致的動詞/賓語或賓語/動詞順序。例如,將動詞置於前面時,所使用的名稱諸如 InsertWidget 和 InsertSprocket;將賓語置於前面時,所使用的名稱諸如 WidgetInsert 和 SprocketInsert。
推薦名稱應該為動詞或動詞短語.例如Save,SaveCustomer,而不要使用CustomerSave
不要在方法中重複類的名稱。例如,如果某個類已命名為 Book,則不要將某個方法稱為 Book.CloseBook,而可以將方法命名為 Book.Close。
6.屬性命名
名稱應該為名詞及名詞短語
使用Pascal規則
對於bool型屬性或者變數使用Is(is)作為字首,不要使用Flag字尾,例如應該使用IsDeleted,而不要使用DeleteFlag
7.集合命名
名稱應該為名詞及名詞短語
使用Pascal規則
名稱後面追加“Collection”
8. 事件命名
event handlers命名使用 EventHandler 字尾.
兩個引數分別使用 sender 及 e
使用Pascal規則
事件引數使用EventArgs 字尾
事件命名使用語法時態反映其激發的狀態,例如 Changed,Changing.
考慮使用動詞命名. 變數命名
在簡單的迴圈語句中計數器變數使用 i, j, k, l, m, n
使用 Camel 命名規則
9.自定義的屬性以Attribute結尾
程式碼如下:
public class AuthorAttribute : Attribute
{
}
10.自定義的異常以Exception結尾
複製程式碼程式碼如下:
public class AppException : Exception
{
}
11. 在類的頂部宣告所有的成員變數,靜態變數宣告在最前面
// Correct
public class Account
{
public static string BankName;
public static decimal Reserves;
public string Number {get; set;}
public DateTime DateOpened {get; set;}
public DateTime DateClosed {get; set;}
public decimal Balance {get; set;}
// Constructor
public Account()
{
// ...
}
}
12.不推薦使用匈牙利命名法
不要給成員變數加任何字首(如、m、s_等等)。如果想要區分區域性變數和成員變數,可以使用this關鍵字。