文字常量和具名变量


文字常量 literal

文字常量(literal)就是代码中没有存放在变量或具名常量中的静态数据。文字常量可以是字符串或文本、数字、日期或布尔值。

Dim strMessage
strMessage = "Hello"
MsgBox strMessage

很多情况下,代码中使用文字常量就够了,尤其是代码量较少,复杂度比较低的简单脚本。程序员总会用到文字常量。他们并没有什么固有的坏处。但是,可以举出很多例子,其中使用具名常量比使用文字常量更好。

具名常量 named constant

具名常量(named constant)类似于变量,它也是内存中存放数据的地址的名称。不同之处在于,顾名思义,它是一个常量,在运行时不能修改。而变量是动态的。在代码运行时,变量作用域中的任何代码都可以将其中的值改成其他东西。而具名常量则是静态的。一旦定义好,在运行时任何代码都不能修改它。

在 VBScript 中,用 Const 语句定义常量

Option Explicit
Const GREETING = "Hello there, "
Dim strUserName strUserName = InputBox("Please enter your name.")
If Trim(strUserName) < > "" Then
MsgBox GREETING & strUserName & "."
End If

常量的名称全部大写,这是一种广泛接受的具名常量命名方式。将常量名称定义为全大写就更容易将其与变量区分开,变量通常都是小写的或大小写混合的。另外,因为常量通常全都是大写字母,常量名称中的不同单词是以下划线(_)分割的。

使用具名常量的好处

  • 具名常量可以减少程序缺陷。如果要在代码中重复相同的文字常量,犯拼写错误的概率就会随着输入次数而增加。如果在代码中用具名常量代替文字常量,尽管您还是有可能拼错,但是脚本引擎会在运行时捕获这个错误(只要使用了 Option Explicit),而文字常量的拼写错误就很有可能长时间被忽略。
  • 具名常量可以使代码清晰易懂。前面例子中使用的文字常量本身就很好理解,添加一个具名常量也无助于使其更清晰易懂。但是,如果在阅读代码时不能立即知道常量的用途,人们就难以理解代码中常量的意义。这种情况在遇到数字常量时尤其突出。数字本身通常都无法说明它在代码中的用途,而用常量代替它可以使其意义更清楚。
  • 如果文字常量非常长,或者难以输入,那么用具名常量代替它可以简化代码的输入。例如,若您要在代码的多个地方插入大段法律声明,就最好用一个简短的具名常量代替这一大段文字,从而简化代码的输入。

内建常量

MsgBox "The sky is falling!", vbExclamation