关于VB命名的一些经验总结

2019-04-15 14:43发布

    关于VB程序设计中的命名,对于初学者来说,是一件比较头疼的事,就算一些VB老手,也偶尔会为如何命名而烦恼,目前流行的命名法多种多样,如匈牙利命名法、骆驼命名法、Pascal命名法以及GNU C常用的下划线命名法等,各种命名法都各有利弊,如何更好地扬长避短,将各种命名法的优点纳入己用,进而形成一个团队的命名风格,对于项目协作开发来说,无疑会起到一些事半功倍的效果。为此,我将数年VB编程中的命名经验总结如下,共大家参考:   一、变量命名   1、一般变量命名:尽量使用匈牙利命名法,在缩写时,要尽量能够表达原文含义,如strName,str表示String类型,Name为变量名称或真实含;再如ptCursor,pt表示POINT类型,Cursor为变量名称或真实含义。如果将ptCursor写成psCursor,会让人误以为Cursor的类型为PAINTSTRUCT,从而产生误读。   在一般变量命名时,对于控件或对象的命名,由于有些朋友不知道该如何缩写控件的称呼,故附上一份“李洪根”先生写的一份示例。   2、调用API时变量命名:尽量将API声明中ByVal XXX As String和XXX As Any改为ByVal XXX As Long,然后使用匈牙利命名法进行调用,如lpszText、lpwstrText、lpfnCallBack等,第一个变量表示以/0结尾的ANSI字符串长指针,第二个变量表示UNICOD字符串(VB里的String属于后者)长指针,第三个变量表示回调函数地址。 (VB中获得变量和函数指针可使用VarPtr、StrPtr、ArrayPtr等函数和Address Of运算符实现)。   3、在实际使用中,变量还有全局变量、模块公共变量和局部变量之分,全局变量和模块公共变量命名,可以在匈牙利命名法的基础上,可以借鉴下划线命名法,分别加上“g_”和“m_”前缀加以区分。   二、自定义常量命名   自定义常量命名法可以借鉴匈牙利命名法和下划线命名法,但组成单词的所有字母均为大写,如:OBJ_BITMAP,OBJ表示该常量的类型为对象,BITMAP为常量名称或真实含义,再如S_OK、S_FAIL等定义,均是如此。
  三、自定义类型   为了区分变量、常量以及后面所要涉及的枚举、函数的命名,自定义类型在命名时,建议所有单词均由大写字母组成,其中并无下划线,如API中BITMAPINFO。还可以在此基础上,增加一个“tag”前缀进行强制宣示,如tagMOUSE_POSITION。   四、自定义枚举   自定义枚举的命名在VB里是一件不容易统一的事,就连微软自己的命名方法都是五花八门,如:RasterOpConstants为Pascal命名法,ADCPROP_UPDATECRITERIA_ENUM为下划线命名法的变异,相同点是,都分别使用了“Constants”和“_ENUM”后缀进行强制宣示,尽管前者在VB里最为常见,但笔者倾向于后者,即用下划线命名法的变异,再加上一个“_ENUM”后缀进行宣示,如:MOUSE_EVENT_ENUM。   五、自定义函数   自定义函数命名,可以使用大写字母开头的Pascal命名法,如StrConv。如果函数名称里被缩写的不只一个单词,可以直接使用一些行业惯例,如MakeSQL,此例中由于SQL为三个单词的缩写,故并未违背Pascal命名法的规则。   六、模块   VB里常用的模块包括frm、bas、cls、ctl等类型,建议使用模块类型为前缀,采用骆驼命名法进行命名(如果把frm、bas、cls、ctl等视为类型的话,也可以说是匈牙利命名法),如modStartup,ctlButton等。   以上纯属一家之言,不当之处,还望指正!       附:常用控件命名
Form  frm  frmMain
Menu  mnu  mnuFileOpen
Label  lbl  lblHelpMessage
Check box chk  chkReadOnly
Combo box cbo  cboEnglish
Command button cmd  cmdExit
Common dialog  dlg  dlgFileOpen
Data grid  dgd  dgdTitles
Date picker dtp  dtpPublished
Directory list box dir  dirSource
Drive list box drv  drvTarget
File list box fil  filSource
ADO Data  ado  adoBiblio
Frame  fra  fraLanguage
Hierarchical flexgrid flex  flexOrders
Image  img  imgIcon
ImageList  ils  ilsAllIcons
List box  lst  lstPolicyCodes
ListView  lvw  lvwHeadings
Month view mvw  mvwPeriod
MS Chart  ch  chSalesbyRegion
MS Flex grid msg  msgClients
MS Tab   mst  mstFirst
OLE container ole  oleWorksheet
Option button opt  optGender
Picture box pic  picVGA
ProgressBar prg  prgLoadFile
RichTextBox rtf  rtfReport
StatusBar  sta  staDateTime
TabStrip  tab  tabOptions
Text box  txt  txtLastName
Toolbar  tlb  tlbActions
TreeView  tre  treOrganization
(全文完)