學(xué)習(xí)VB.NET時(shí),你可能會(huì)遇到VB.NET編碼規(guī)范問題,這里將介紹VB.NET編碼規(guī)范問題的解決方法,在這里拿出來和大家分享一下。我所采用的新的VB.NET編碼規(guī)范,是一種被證明能明顯改善代碼可讀性,并有助于代碼管理、分類的編碼規(guī)范。采用這種編碼規(guī)范,能避免如匈牙利命名法帶來的繁長前綴,便于記憶變量的用途。下面的介紹這種VB.NET編碼規(guī)范。
一、類型級單位的命名
1、類。
以Class聲明的類,都必須以名詞或名詞短語命名,體現(xiàn)類的作用。如:
Class Indicator
當(dāng)類是一個(gè)特性(Attribute)時(shí),以Attribute結(jié)尾,當(dāng)類是一個(gè)異常(Exception)時(shí),以Exception結(jié)尾:
Class ColorSetException
Class CauseExceptionAttribute
當(dāng)類只需有一個(gè)對象實(shí)例(全局對象,比如Application等),必須以Class結(jié)尾,如
Class ScreenClass
Class SystemClass
當(dāng)類只用于作為其他類的基類,根據(jù)情況,以Base結(jié)尾:
MustInherit Class IndicatorBase
如果定義的類是一個(gè)窗體,那么名字的后面必須加后綴Form,如果是Web窗體,必須加后綴Page:
Class PrintForm : Inherits Form '* Windows窗體
Class StartPage : Inherits Page '* Web窗體
2、枚舉和結(jié)構(gòu)
同樣必須以名詞或名詞短語命名。最好體現(xiàn)枚舉或結(jié)構(gòu)的特點(diǎn),如:
Enum ColorButtons '以復(fù)數(shù)結(jié)尾,表明這是一個(gè)枚舉
Structure CustomerInfoRecord '以Record結(jié)尾,表明這是一個(gè)結(jié)構(gòu)體
3、委派類型
普通的委派類型以描述動(dòng)作的名詞命名,以體現(xiàn)委派類型實(shí)例的功能:
Delegate Sub DataSeeker (ByVal SeekString As String)
用于事件處理的委派類型,必須以EventHandler結(jié)尾,如:
Delegate Sub DataChangedEventHandler (ByVal Sender As Object, ByVal e As DataChangedEventArgs)
4、接口
與其他類型不同,接口必須要由I作為前綴,并用形容詞命名,突出表現(xiàn)實(shí)現(xiàn)接口的類將具有什么能力:
Interface ISortable
5、模塊
模塊不是類型,他的名稱除了必須以名詞命名外,必須加以后綴Module:
Module SharedFunctionsModule
上述所有規(guī)則的共同特點(diǎn)是,每個(gè)組成名稱的詞語都必須是大寫開頭,禁止完全大寫或小寫的名稱。
二、方法和屬性的命名
1、方法
無論是函數(shù)還是子程序,方法都必須以動(dòng)詞或動(dòng)詞短語命名。無需區(qū)分函數(shù)和子程序,也無需指明返回類型。
Sub Open(ByVal CommandString As String)
Function SetCopyNumber(ByVal CopyNumber As Integer)
參數(shù)需要指明ByVal還是ByRef,這一點(diǎn)寫起來會(huì)讓程序邊長,但非常必要。如果沒有特別情況,都使用ByVal。參數(shù)的命名方法,參考后面“變量的命名方法”。需要重載的方法,一般不寫Overloads,根據(jù)需要編寫重載的方法。
2、屬性
原則上,字段(Field)是不能公開的,要訪問字段的值,一般使用屬性。屬性以簡潔清晰的名詞命名:
Property Concentration As Single
Property Customer As CustomerTypes
3、事件
事件是特殊的屬性,只能在事件處理上下文中使用。命名的原則一般是動(dòng)詞或動(dòng)詞的分詞,通過時(shí)態(tài)表明事件發(fā)生的時(shí)間:
Event Click As ClickEventHandler
Event ColorChanged As ColorChangedEventHangler
三、變量和常數(shù)
常數(shù)以表明常數(shù)意義的名詞命名,一般不區(qū)分常數(shù)的類型:
Const DefaultConcentration As Single = 0.01
在嚴(yán)格要求的代碼中,常數(shù)以c_開頭,如c_DefaultConcentration,但最好不要用它,它會(huì)帶來輸入困難。
普通類型的變量,只要用有意義的名字命名即可,不可使用簡稱和無意義的名稱諸如A,x1等,下面給出了良好的例子:
Dim Index As Integer
Dim NextMonthExpenditure As Decimal
Dim CustomerName As String
不能起太長的名字,應(yīng)該盡量簡潔,如下面的例子:
Dim VariableUsedToStoreSystemInformation As String '* 錯(cuò)誤,太復(fù)雜了
Dim SystemInformation As String '* 正確,簡單明了
Dim sysInfo As String '* 錯(cuò)誤,過于簡單
特殊情況可以考慮一個(gè)字母的變量:
Dim g As Graphic
對于控件,應(yīng)該指明控件的類型,方法是直接在變量后面加以類名:
Friend WithEvents NextPageButton As Button '* 按鈕
Friend WithEvents ColorChoicerPanel As Panel '* 面版
Friend WithEvents CardFileOpenDialog As FileOpenDialog '* 文件打開對話框
等等,無需規(guī)定某種類型的變量的前綴,只需把類型寫在后面就行了,試對比下列代碼:
btnCancel.Text = "&Cancel"
CancelButton.Text = "&Cancel"
顯然后者更能使閱讀者明白變量的類型是一個(gè)按鈕。
四、標(biāo)簽
標(biāo)簽就是用于Goto跳轉(zhuǎn)的代碼標(biāo)識,由于Goto并不推薦使用,所以標(biāo)簽的使用也比較苛刻。標(biāo)簽必須全部大寫,中間的空格用下劃線_代替,而且應(yīng)該以_開頭,比如:
_A_LABEL_EXAMPLE:
如此定義標(biāo)簽是為了與其他代碼元素充分區(qū)別。
五、名字空間
通常,一個(gè)工程使用一個(gè)名字空間,通常不需要用Namespace語句,而是在工程選項(xiàng)的“Root Namespace”中指定,使用根名字空間可以使代碼更加整齊,容易修改,這一點(diǎn)是VB十足的優(yōu)點(diǎn)。名字空間的語法是:
公司名.產(chǎn)品名[.組件名的復(fù)數(shù)]
如:
Namespace Ninputer.VirtualScreen
Namespace Ninputer.CardEditor.CustomeControls
隨便起一個(gè)名字空間的名字絕對不是一個(gè)好主意,一定要遵守上述規(guī)定。
六、注釋
注釋的規(guī)則繁多,這里僅提到其中一點(diǎn):正常的注釋以'*開頭,單獨(dú)的'只用來注釋暫時(shí)不用的代碼
'* 這是普通的注釋
'* 這段代碼在調(diào)試正確后加入
'If UseHighSpeed(g) = True Then ....
這樣能夠方便的采用代碼注釋工具控制代碼的使用。
以上已經(jīng)簡單的介紹了我使用的VB.NET編碼規(guī)范,這個(gè)代碼規(guī)范也適用于C#。僅供大家參考。
【編輯推薦】
- 簡單講述VB.NET表間拖放
- 五分鐘學(xué)會(huì)VB.NET實(shí)現(xiàn)拖放
- 講述強(qiáng)大的VB.NET Web Forms,使用起來卻如此簡單
- 分析VB QuickSort應(yīng)用程序
- 兩步就可以掌握VB使用ArrayList類