在开发中保持良好的编码规范是十分重要的我所采用的新的VBnet编码规范是一种被证明能明显改善代码可读性并有助于代码管理分类的编码规范采用这种编码规范能避免如匈牙利命名法带来的繁长前缀便于记忆变量的用途
下面介绍这种编码规范
一类型级单位的命名
类
以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窗体
枚举和结构
枚举和结构同样必须以名词或名词短语命名最好体现枚举或结构的特点如
Enum ColorButtons 以复数结尾表明这是一个枚举
Structure CustomerInfoRecord 以Record结尾表明这是一个结构体
委派类型
普通的委派类型以描述动作的名词命名以体现委派类型实例的功能
Delegate Sub DataSeeker (ByVal SeekString As String)
用于事件处理的委派类型必须以EventHandler结尾如
Delegate Sub DataChangedEventHandler (ByVal Sender As Object ByVal e As DataChangedEventArgs)
接口
与其他类型不同接口必须要由I作为前缀并用形容词命名突出表现实现接口的类将具有什么能力
Interface ISortable
模块
模块不是类型他的名称除了必须以名词命名外必须加以后缀Module:
Module SharedFunctionsModule
上述所有规则的共同特点是每个组成名称的词语都必须是大写开头禁止完全大写或小写的名称
二方法和属性的命名
方法
无论是函数还是子程序方法都必须以动词或动词短语命名无需区分函数和子程序也无需指明返回类型
Sub Open(ByVal CommandString As String)
Function SetCopyNumber(ByVal CopyNumber As Integer)
参数需要指明ByVal还是ByRef这一点写起来会让程序变长但非常必要如果没有特别情况都使用ByVal参数的命名方法参考后面变量的命名方法需要重载的方法一般不写Overloads根据需要编写重载的方法
属性
原则上字段(Field)是不能公开的要访问字段的值一般使用属性属性以简洁清晰的名词命名
Property Concentration As Single
Property Customer As CustomerTypes
事件
事件是特殊的属性只能在事件处理上下文中使用命名的原则一般是动词或动词的分词通过时态表明事件发生的时间
Event Click As ClickEventHandler
Event ColorChanged As ColorChangedEventHangler
三变量和常数
常数以表明常数意义的名词命名一般不区分常数的类型
Const DefaultConcentration As Single =
在严格要求的代码中常数以c_开头如c_DefaultConcentration但最好不要用它它会带来输入困难
普通类型的变量只要用有意义的名字命名即可不可使用简称和无意义的名称诸如Ax等下面给出了良好的例子
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 * 文件打开对话框
等等无需规定某种类型的变量的前缀只需把类型写在后面就行了试对比下列代码
btnCancelText = &Cancel
CancelButtonText = &Cancel
显然后者更能使阅读者明白变量的类型是一个按钮
四标签
标签就是用于Goto跳转的代码标识由于Goto并不推荐使用所以标签的使用也比较苛刻标签必须全部大写中间的空格用下划线_代替而且应该以_开头比如
_A_LABEL_EXAMPLE:
如此定义标签是为了与其他代码元素充分区别
五名字空间
通常一个工程使用一个名字空间通常不需要用Namespace语句而是在工程选项的Root Namespace中指定使用根名字空间可以使代码更加整齐容易修改这一点是VB十足的优点名字空间的语法是 公司名产品名[组件名的复数]
如
Namespace NinputerVirtualScreen
Namespace NinputerCardEditorCustomeControls
随便起一个名字空间的名字绝对不是一个好主意一定要遵守上述规定
六注释
注释的规则繁多这里仅提到其中一点正常的注释以*开头单独的只用来注释暂时不用的代码
* 这是普通的注释
* 这段代码在调试正确后加入
If UseHighSpeed(g) = True Then
这样能够方便的采用代码注释工具控制代码的使用
以上简单的介绍了我使用的VBnet代码规范这个代码规范也适用于C#仅供大家参考