通常,各种命名规则都用小写的前缀或后缀来指定变量的类型和作用范围。变量本身应当用有意义的名称来说明它是什么或要做什么。多字变量名由几个字连接在一起,每个字的第一个字母大写,并且不使用下划线。如果您用过变量名模板,其格式应当如 prefixNoun 或 prefixNounVerb。
常量名也应当有一定的意义,格式为 NOUN 或 NOUN_VERB。常量名均为大写,字之间用下划线分隔。尽管给常量名添加字符以指定数据类型和作用范围的做法不存在技术性错误,但通常不这么做。常量与变量都是数据的符号表示,在此意义上,二者完全相同。区别在于变量可以变化,而常量则保持不变。
变量名和常量名最多可以包含 255 个字符,但是,超过 25 到 30 个字符的名称比较笨拙。此外,要想取一个有实际意义的名称,清楚地表达变量或常量的用途,25 或 30 个字符应当足够了。
1 变量名
变量名使用大小写混合的格式(Noun 或 NounVerb),以此指定变量是什么以及它要做什么。大小写混合格式被用作变量名的说明部分,在这里每个字的第一个字母大写而其余字母小写。
变量名还有两个或三个字符的前缀,用来指定变量的数据类型。例如,以下语句声明的变量都用前缀指定变量的数据类型:
DimstrRecipientNameAsStringDimintItemsProcessedAsIntegerDimblnContinueProcessingAsBoolean
两个字符的前缀通常用来指定 Office 应用程序对象类型。例如:
DimxlAppAsExcel.ApplicationDimolNameSpaceAsOutlook.NameSpaceDimwdNewDocAsWord.Document
在声明一般变量或对象变量时,要使用 “obj” 前缀。即使要创建代表 Microsoft? Office 应用程序的晚期绑定对象变量,也应当使用该前缀。例如:
DimobjXLAppAsObjectDimobjWDDocumentAsObjectDimobjOLMailItemAsObject
全局变量和模块级变量还要再加一个字符前缀来表示它们的作用范围。变量的作用范围定义了变量的生存期和可见性。全局变量和模块级变量都有永久的生存期。就是说,只要应用程序不关闭,变量就一直占用分配给它的内存。过程内声明的变量只在声明它们的过程中有效,其生存期为过程代码的执行时间。但是,用关键字 Static 来声明变量的情况例外。
全局变量有小写的 “g” 作前缀,并在模块的“声明”部分用 Public 语句声明。它对应用程序中所有模块内的所有过程可见。例如,Public gstrPathToDataSource As String 是一个全局变量,它包含了一个字符串,而该字符串是应用程序中所使用的数据源的路径。
应当尽可能始终使用最小的作用范围来定义变量。只有在找不到其他途径来共享变量所包含的数据时,才应当使用全局变量。全局变量会使代码难以理解和维护。如果您使用的全局变量过多,且未经过仔细挑选,则可能需要重新设计代码,以便减少全局变量。
模块级变量有小写的 “m” 前缀,是在模块的“声明”部分用 Dim 或 Private 语句声明的。它们对声明时所处模块中的所有过程可见。例如,Dim mrstCustomerRecords As ADODB.Recordset 是用于客户记录的模块级对象变量。在类模块中,用 Private 语句声明的模块级变量具有前缀 “p_”。类模块中公共的模块级变量作为类属性出现,不应当有任何前缀表示它们的数据类型或作用范围。
过程级变量是在过程内用 Dim 语句创建的。例如,Dim intCurrentMailItem As Integer 是一个用作循环计数器的过程级变量。此外,过程级变量可以用 Static 关键字声明。即使声明静态变量的过程已经结束运行,静态变量仍然会保留它们的值。静态的过程级变量具有小写的 “s” 前缀。例如,Static scurTotalSales As Currency 将创建一个过程级静态变量,用于在一个计算当前销售额的过程中保存累加和。