VB.net 編碼規範(也適用於C#) (轉)
VB.net 編碼規範(也適用於C#) (轉)[@more@]在開發中保持良好的編碼規範是十分重要的。我所採用的新的編碼規範,是一種被證明能明顯改善程式碼可讀性,並有助於程式碼管理、分類的編碼規範。採用這種編碼規範,能避免如匈牙利命名法帶來的繁長字首,便於記憶變數的用途。下面的介紹這種編碼規範。
一、型別級單位的命名
1、類。
以Class宣告的類,都必須以名詞或名詞短語命名,體現類的作用。如:
Class Indicator
當類是一個特性(Attribute)時,以Attribute結尾,當類是一個異常(Exception)時,以Exception結尾:
Class ColorSetException
Class CauseExceptionAttribute
當類只需有一個例項(全域性物件,比如Application等),必須以Class結尾,如
Class ScreenClass
Class SystemClass
當類只用於作為其他類的基類,根據情況,以Base結尾:
MustInherit Class IndicatorBase
如果定義的類是一個窗體,那麼名字的後面必須加字尾Form,如果是窗體,必須加字尾Page:
Class PrintFo: Inherits Form '* 窗體
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 , 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,但最好不要用它,它會帶來輸入困難。
普通型別的變數,只要用有意義的名字命名即可,不可使用簡稱和無意義的名稱諸如A,x1等,下面給出了良好的例子:
Dim Index As Integer
Dim NextMonthExpenditure As Decimal
Dim CustomerName As String
不能起太長的名字,應該儘量簡潔,如下面的例子:
Dim VariableUsedToStoreSystemInformation As String '* 錯誤,太複雜了
Dim SystemInformation As String '* 正確,簡單明瞭
Dim sysInfo As String '* 錯誤,過於簡單
特殊情況可以考慮一個字母的變數:
Dim g As Graphic
對於,應該指明控制元件的型別,方法是直接在變數後面加以類名:
Friend WithEvents NextPageButton As Button '* 按鈕
Friend WithEvents ColorChoicerPanel As Panel '* 面版
Friend WithEvents CardFileOpenDialog As FileOpenDialog '* 開啟對話方塊
等等,無需規定某種型別的變數的字首,只需把型別寫在後面就行了,試對比下列程式碼:
btnCancel.Text = "&Cancel"
CancelButton.Text = "&Cancel"
顯然後者更能使閱讀者明白變數的型別是一個按鈕。
四、標籤
標籤就是用於Goto跳轉的程式碼標識,由於Goto並不推薦使用,所以標籤的使用也比較苛刻。標籤必須全部大寫,中間的空格用下劃線_代替,而且應該以_開頭,比如:
_A_LABEL_EXAMPLE:
如此定義標籤是為了與其他程式碼元素充分割槽別。
五、名字空間
通常,一個工程使用一個名字空間,通常不需要用Namespace語句,而是在工程選項的“ Namespace”中指定,使用根名字空間可以使程式碼更加整齊,容易修改,這一點是VB十足的優點。名字空間的語法是:
公司名.產品名[.名的複數]
如:
Namespace Ninputer.VirtualScreen
Namespace Ninputer.CardEditor.CustomeControls
隨便起一個名字空間的名字絕對不是一個好主意,一定要遵守上述規定。
六、註釋
註釋的規則繁多,這裡僅提到其中一點:正常的註釋以'*開頭,單獨的'只用來註釋暫時不用的程式碼
'* 這是普通的註釋
'* 這段程式碼在正確後加入
'If UseHighSpeed(g) = True Then ....
這樣能夠方便的採用程式碼註釋工具控制程式碼的使用。
以上已經簡單的介紹了我使用的VB.net程式碼規範,這個程式碼規範也適用於。僅供大家參考。
一、型別級單位的命名
1、類。
以Class宣告的類,都必須以名詞或名詞短語命名,體現類的作用。如:
Class Indicator
當類是一個特性(Attribute)時,以Attribute結尾,當類是一個異常(Exception)時,以Exception結尾:
Class ColorSetException
Class CauseExceptionAttribute
當類只需有一個例項(全域性物件,比如Application等),必須以Class結尾,如
Class ScreenClass
Class SystemClass
當類只用於作為其他類的基類,根據情況,以Base結尾:
MustInherit Class IndicatorBase
如果定義的類是一個窗體,那麼名字的後面必須加字尾Form,如果是窗體,必須加字尾Page:
Class PrintFo: Inherits Form '* 窗體
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 , 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,但最好不要用它,它會帶來輸入困難。
普通型別的變數,只要用有意義的名字命名即可,不可使用簡稱和無意義的名稱諸如A,x1等,下面給出了良好的例子:
Dim Index As Integer
Dim NextMonthExpenditure As Decimal
Dim CustomerName As String
不能起太長的名字,應該儘量簡潔,如下面的例子:
Dim VariableUsedToStoreSystemInformation As String '* 錯誤,太複雜了
Dim SystemInformation As String '* 正確,簡單明瞭
Dim sysInfo As String '* 錯誤,過於簡單
特殊情況可以考慮一個字母的變數:
Dim g As Graphic
對於,應該指明控制元件的型別,方法是直接在變數後面加以類名:
Friend WithEvents NextPageButton As Button '* 按鈕
Friend WithEvents ColorChoicerPanel As Panel '* 面版
Friend WithEvents CardFileOpenDialog As FileOpenDialog '* 開啟對話方塊
等等,無需規定某種型別的變數的字首,只需把型別寫在後面就行了,試對比下列程式碼:
btnCancel.Text = "&Cancel"
CancelButton.Text = "&Cancel"
顯然後者更能使閱讀者明白變數的型別是一個按鈕。
四、標籤
標籤就是用於Goto跳轉的程式碼標識,由於Goto並不推薦使用,所以標籤的使用也比較苛刻。標籤必須全部大寫,中間的空格用下劃線_代替,而且應該以_開頭,比如:
_A_LABEL_EXAMPLE:
如此定義標籤是為了與其他程式碼元素充分割槽別。
五、名字空間
通常,一個工程使用一個名字空間,通常不需要用Namespace語句,而是在工程選項的“ Namespace”中指定,使用根名字空間可以使程式碼更加整齊,容易修改,這一點是VB十足的優點。名字空間的語法是:
公司名.產品名[.名的複數]
如:
Namespace Ninputer.VirtualScreen
Namespace Ninputer.CardEditor.CustomeControls
隨便起一個名字空間的名字絕對不是一個好主意,一定要遵守上述規定。
六、註釋
註釋的規則繁多,這裡僅提到其中一點:正常的註釋以'*開頭,單獨的'只用來註釋暫時不用的程式碼
'* 這是普通的註釋
'* 這段程式碼在正確後加入
'If UseHighSpeed(g) = True Then ....
這樣能夠方便的採用程式碼註釋工具控制程式碼的使用。
以上已經簡單的介紹了我使用的VB.net程式碼規範,這個程式碼規範也適用於。僅供大家參考。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991063/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- c#編碼規範【轉載】C#
- C# 編碼規範C#
- C#開發編碼規範C#
- [轉]PHP編碼規範PHP
- Java 編碼規範 (轉)Java
- java編碼規範 (轉)Java
- java編碼規範(2) (轉)Java
- Java 程式編碼的規範(轉)Java
- 編碼規範系列:css規範CSS
- 關於PHP開發編碼規範PHP
- Java語言編碼規範(一) (轉)Java
- Java語言編碼規範(2)(轉)Java
- Java語言編碼規範(1)(轉)Java
- 程式碼規範之前端編寫碼規範前端
- [C#] 程式碼規範C#
- CSS編碼規範CSS
- Javascript編碼規範JavaScript
- html編碼規範HTML
- Swift 編碼規範Swift
- PHP編碼規範PHP
- SQL 編碼規範SQL
- 關於Java編碼規範的問題Java
- C++編碼命名規範 -- 目前應用C++
- WEB前端編碼規範Web前端
- python編碼規範Python
- 前端安全編碼規範前端
- 前端html編碼規範前端HTML
- Go 編碼規範指南Go
- Go編碼規範指南Go
- android 編碼規範Android
- HTML,CSS編碼規範HTMLCSS
- 阿里Java編碼規範阿里Java
- [轉]高質量JAVA程式碼編寫規範Java
- 編寫適用於模擬器的 Linux 程式碼(轉)Linux
- 網易郵箱前端Javascript編碼規範:類規範前端JavaScript
- Java語言編碼規範Java
- PHP編碼風格規範PHP
- HTML編碼規範建議HTML