C#編碼規范---------------------------
一、類型級單位的命名
1、類。
以Class聲明的類,都必須以名詞或名詞短語命名,體現類的作用。如:
Class Indicator
當類是一個特性(Attribute)時,以Attribute結尾,當類是一個異常(Exception)時,以Exception結尾:
Class ColorSetException
Class CauseExceptionAttribute
當類只需有一個對象實例(全局對象,比如Application等),必須以Class結尾,如
Class ScreenClass
Class SystemClass
當類只用於作為其他類的基類,根據情況,以Base結尾:
MustInherit Class IndicatorBase
如果定義的類是一個窗體,那麼名字的後面必須加後綴Form,如果是Web窗體,必須加後綴Page:
Class PrintForm : Inherits Form '* Windows窗體
Class StartPage : Inherits Page '* Web窗體
2、枚舉和結構
同樣必須以名詞或名詞短語命名。最好體現枚舉或結構的特點,如:
Enum ColorButtons '以復數結尾,表明這是一個枚舉
Structure CustomerInfoRecord '以Record結尾,表明這是一個結構體
3、委派類型
普通的委派類型以描述動作的名詞命名,以體現委派類型實例的功能:
Delegate Sub DataSeeker (ByVal SeekString As String)
用於事件處理的委派類型,必須以EventHandler結尾,如:
Delegate Sub DataChangedEventHandler (ByVal Sender As Object, ByVal e As DataChangedEventArgs)
4、接口
與其他類型不同,接口必須要由I作為前綴,並用形容詞命名,突出表現實現接口的類將具有什麼能力:
Interface ISortable
5、模塊
模塊不是類型,他的名稱除了必須以名詞命名外,必須加以後綴Module:
Module SharedFunctionsModule
上述所有規則的共同特點是,每個組成名稱的詞語都必須是大寫開頭,禁止完全大寫或小寫的名稱。
二、方法和屬性的命名
1、方法
無論是函數還是子程序,方法都必須以動詞或動詞短語命名。無需區分函數和子程序,也無需指明返回類型。
Sub Open(ByVal CommandString As String)
Function SetCopyNumber(ByVal CopyNumber As Integer)
參數需要指明ByVal還是ByRef,這一點寫起來會讓程序邊長,但非常必要。如果沒有特別情況,都使用ByVal。參數的命名方法,參考後面“變量的命名方法”。需要重載的方法,一般不寫Overloads,根據需要編寫重載的方法。
2、屬性
原則上,字段(FIEld)是不能公開的,要訪問字段的值,一般使用屬性。屬性以簡潔清晰的名詞命名:
Property Concentration As Single
Property Customer As CustomerTypes
3、事件
事件是特殊的屬性,只能在事件處理上下文中使用。命名的原則一般是動詞或動詞的分詞,通過時態表明事件發生的時間:
Event Click As ClickEventHandler
Event ColorChanged As ColorChangedEventHangler
三、變量和常數
常數以表明常數意義的名詞命名,一般不區分常數的類型:
Const DefaultConcentration As Single = 0.01
在嚴格要求的代碼中,常數以c_開頭,如c_DefaultConcentration,但最好不要用它,它會帶來輸入困難。