
vb编程规范(匈牙利命名法).doc
9页Visual Basic编程规范编程规范编程规范注重于程序的物理结构和外观,而不是程序的逻辑结构使用统一编码约定集合的主要原因,是使应用程序的结构和编码风格标准化,使之容易阅读、容易理解而且容易维护1. Visual Basic IDE(集成开发环境)设置(集成开发环境)设置 必须打开设置选项的“要求变量声明”, “对齐控件到网格”, “自动缩进”开关 Tab 的宽度统一为 4 个空格,网格单位一律设为:width 60 height 602. 命名约定命名约定在任何时候,不能使用中文及全角字符,只允许使用英文字母、下划线和数字2.12.1 工程的命名工程的命名 ActiveX 控件和 DLL 工程命名格式为(.Lib),EXE 工程直接命名,如果是通用组件工程,直接命名,如果是项目或产品工程,则使用项目或产品缩写作为前缀如:XWY.Lib 工程命名不必缩写,为了表达意思和用途,可以尽可能地长,而且命名格式采用 (名词) 、 (形容词 + 名词) 或 (名词 + 动作的名词形式)如: StockOperationLib 或 StockLib2.22.2 变量的命名变量的命名程序中的变量遵循匈牙利表示法,即“前缀+变量含义”,变量的含义为一个或多个英文单词,每个单词的第一个字母大写。
变量前缀为三个小写字母示意其类型,所需添加的前缀遵循微软在 MSDN 中的建议列表如下: 对于一般的计数器变量定义,应该尽可能地简单,如: Dim i As IntegerFor i = 0 to 100 Next i范围标识:范围标识:全局变量加前缀’g_’ ,例如:g_strFdbm;模块级变量加前缀:’m_’ 例如:m_strFdbm;过程级变量不加前缀全局变量和模块级变量应该尽量使用全名称,不推荐使用缩写,如:gEntityManager常见的变量类型和控件类型前缀如下表所示:表一 变量类型前缀列表Single sng sngYears Handle hwd hwdPicture Long lng lngOnHand Object obj objUserTable Integer int intAge String str strName User-defined type udt udtEmployee Variant (including Dates) vnt vntDateHired Array arr arrEmployees 表二 数据库对象前缀列表数据库对象数据库对象前缀前缀示例示例Databasedbs dbsAccounts Recordsetrec recForecast commandcmd cmdQuery connectioncon conSql 2.32.3 控件的命名控件的命名控件命名一律使用控件类型缩写+控件用途的命名方式,缩写规则同变量命名,以下是常用控件的类型缩写,应该严格遵守。
如果使用了新的控件(包括升级版本) ,必须向公司提出申请,经评审通过后,协同一致其类型名称缩写,再进行使用 表三 控件类型前缀列表控件前缀举例ADO Data ado adoBiblio Animated button ani aniMailBox Checkbox chk chkPrint Combo box cbo cboTitle Command button cmd cmdCancel Communications com comFax Data dat datBiblio Data-bound combo box dbcbo dbcboLanguage Data-bound grid dbgrd dbgrdQueryResult Common dialog control dlg dlgCommon Control ctr ctrCurrent Directory list box dir dirSource Drive list box drv drvTarget DTPicker DropDateControl dt EnumEditBox enm File list box fil filSource Frame fra fraLanguage Form frm frmMain Vfgrid grd Graph gra Group push button gpb gpbChannel Hierarchical flexgrid flex flexOrders Horizontal scroll bar hsb hsbVolume Image img imgIcon Image ImageList img Label lbl lblHelpMessage Line lin linVertical List box lst lstResultCodes ListView lv MCI mci mciVideo MDI child form mdi mdiContact Menu control mnu mnuFileOpen NumEditBox nm OLE container ole olePhoto Option button opt optSpanish Panel pnl pnlSettings Picture box pic PicDiskSpace Picture clip clp ClpToolbar ProgressBar prg prgLoadFile Report rpt Scroll bar sbr Shape shp ShpCircle Slider sld sldScale Spin spn StatusBar st ToolBar tb Text box txt TxtAddress Timer tmr TmrAlarm TreeView tv tvFlbm Vertical scroll bar vsb vsbRate 2.42.4 函数和过程的命名函数和过程的命名此处函数包括 sub 和 function,以下这两种过程统称为函数。
函数表示的是一个动作,所以它的结构应该是 动词+名词,动词必须小写,后面的名称首字母大写,如:getMaterialCode、updateGrid、readOrder函数命名尽量不要使用缩写,而且它的名称应该使人一目了然,能够从名称就知道这个函数的功能,不要使用无意义的函数名称,如:getCode,update,readData当函数名称不足以表达其功能时,使用在函数头部加上让调用者足够明白的注释参数的命名:参数的命名:参数命名的原则是全部小写,如果参数包括两个或以上的单词时,首单词字母小写,其它单词首字母大写,如 showCol、isUpdate2.52.5 常量的命名常量的命名常量的命名应该全部大写,使用‘_’作为单词间的分隔符,单词尽量使用全名称,如: Public Const MSG_EMPTY_ROW As String = “有空行存在!”解释:(1) 对一些常用词应该使用简写,如 MSG(2) 使用 Public 来声明常量(3) 对常量的声明必须带上类型,如上面的 As String2.62.6 属性的命名属性的命名属性的命名采用首字母大写的原则,如 ItemCount.Item 2.72.7 类、窗体和模块的命名类、窗体和模块的命名类、窗体和模块命名采用前缀+功能名词,并且单词首字母大写。
类的前缀为(Cls),如:ClsSystemConfig;窗体前缀 Frm,如:FrmList;模块前缀为 Mod,如 ModList以上三种命名在一个项目内必须保持唯一2.82.8 自定义控件的命名自定义控件的命名自定义控件的命名:名词 + Ctrl 如:EditGridCtrl3. 书写格式约定书写格式约定3.13.1 定义定义 定义的代码块应该放在一起,不要在中间定义变量,变量的定义应该顶行进齐,不能缩进如下: Dim i As Integer Dim j As Integer Dim em As EntityManager3.23.2 空行空行 空行是区分代码块与块的间隔,在函数之间必须加上空行(两行左右) ,而函数内部,变量声明块和实现块(实现块指除变量声明外的其它代码)要使用空行来间隔(一行) ,实现块的内部,通过空行来标识一个功能段,如: Private Sub Check(Order As NYSaleBackLib.Order) '减少库存 Dim objStockItem As NYStockLib.StockItem Dim objStock As NYStockLib.Stock Dim i As IntegerSet objStock = CreateStock()For i = 0 To Order.ItemCount - 1Set objStockItem = Order.item(i) '减少库存 Call objStock.ReduceItem(objStockItem, True)Next iSet objStock = NothingEnd Sub(注意:不要使用过多的空行,空行太多影响代码阅读!) 3.33.3 缩进缩进 缩进必须严格执行,变量声明块不缩进,实现块必须保证全部缩进(即不可能有实现块是行首对齐的) 。
每个单位的代码缩进为一个 TAB,非相关代码留一行空白的间隔注:Goto 标签不缩进对于基本的控制结构,必须要有缩进,如:IF、DO、WITH、FOR、OPEN、SELECT块,缩进示例如下: Private Function GetMax(Byref lngArray() As Long) As Long Dim lngMax As Long Dim lngCount as long GetMax=0 For lngCount =0 to Ubound(lngArray) If lngArray (lngCount)>lngMax Then lngMax=lngArray(lngCount) End If Next End Function 对于过长的语句,必须使用续行,续行位置要有明显意义,示例:sql = “SELECT code , name FROM Person “ _& “ WHERE code LIKE ‘001%’ “& “ and code LIKE ‘002%’ “函数的参数如果过长,也应该续行,示例: ' '增加库存 ' ProductCode 产品编号 ' Spec 长度规格 ' Color 颜色 ' Patch 是否拼圈 ' Volumn 盘号 ' Ordinal 子库存顺序号 ' Length 长度 ' IsCheck 是否审核入库增加(否则为弃审出库增加) Public Sub AddDetail(ProductCode As String, _Spec As Double, _Color As String, _Patch As Boolean, _Volumn As String, _Ordinal As Integer, _Length As Double, _IsCheck As Boolean)4. 注释约定注释约定4.14.1 注释量注释量 程序的注译越详尽,越仔细越好。
程序中声明的每一个变量,能加上注译最好,至少用来运算或者保存关键数据的变量必须加上注译对于每一段逻辑上实现某个基本功能的几句代码,最好在其上一行加上简单注译对于每一个自定义的函数,不管大小都必须加上注译4.24.2 格式格式 注译的格式如下: '****************************************************** ' '函数。












