下载
第4章使用常量和枚举值
对过程中的数字进行硬编码时,许多东西都可能出错。硬编码的数字通常称为“幻数”,
因为它们往往处于一种神秘的气氛之中。而且这种数字的含义非常模糊,因为这些数字本身并
不指明它代表的是什么。本章将要说明幻数的不足之处,并用常量和枚举值来替代它们。
使用常量
常量很像变量,你可以为它创建一个名字,并为它赋予一个值。但是,与变量不同的是,
常量是在设计代码时被赋予它的值的,这个值不能在运行时更改。你始终都应该用常量代替幻
数,其原因将在本节中介绍。
注意对过程中的字符串进行硬编码时,其作用与使用幻数相似。消除幻数的所有原
因也适用于消除硬编码的字符串。如果你在设计代码时知道它的值,那么请使用常量,
而不要对文本或数字进行硬编码。
幻数很容易在数据输入时出错
幻数存在的主要问题之一是你很容易在键入数字时出错,从而颠倒了数字的位置。例如,
当你键入数字1 0 8 7 6时,很容易错误地键入 1 0 8 6 7或1 8 0 7 6。与处理变量和保留字的方法不同,
Visual Basic的编译器并不在乎颠倒了位置的数字和不正确的数字,它能使用你提供给它的任何
幻数。有时简单的错误造成的问题不会立即表现出来,而当问题表现出来时,它们会以随机的
计算错误的形式出现,这些错误很难准确定位。用常量来取代幻数时, Visual Basic将在编译时
检查常量的有效性。如果常量不存在, Visual Basic便将这一情况通知你,并且拒绝进行编译。
这可以消除错误键入的数字带来的问题,只要常量拥有正确的值,使用该常量的所有代码也将
使用该正确值。
注意如果你在模块的D e c l a r a t i o n s部分中没有加上Option Explicit语句,同时你的常
量名又出现了键入错误,那么Visual Basic就会用不正确的常量名来说明一个变量,从
而导致结果不准确,这是你必须显式说明变量的又一个原因。关于显式说明变量和隐
含说明变量的详细介绍,请参见第5章。
幻数很难更新
幻数的另一个重大缺点是它们很难不断更新。假如你开发了一个财务应用程序,当前的抵
押贷款利率是7 . 2 5%。另外假设这个值是在根据利率进行计算的许多过程中硬编码的值。当利
率变化时,你该怎么办?(利率是经常变化的。)可以进行全局搜索并用新利率取代旧利率,
但是这会使你的代码出错。在应用程序中使用的另一个贷款利率的值可能也是 7 . 2 5。如果执行
全局搜索,并取代了 7 . 2 5%,你就也改变了这个贷款利率。如果用人工更改代码中的每个值,
可能出现数字换位的错误,也可能键入新值时出错。进行有选择的搜索和取代,并且对每个更
第 4章使用常量和枚举值计计
下载 29
改进行确认,这又太费时间。如果改用常量,你只要将值更改一次(在常量的说明中进行更改),
使用抵押贷款利率的每行代码将立即改用更新后的利率。
常量使代码更容易阅读
使用常量后,得到的一个额外好处是可使创建的代码更容易阅读。一般来说,幻数很不直
观。也许你对幻数非常了解,但是其他人则根本看不明白。通过合理地给常量命名,使用这些
常量的代码就变得比较直观明了,更加容易阅读。请看下面两个代码语句,究竟哪一个语句对
你更有意义呢?
幻数:
curInterestAmount = (curLoanAmount * .06) / 12
有名常量:
curInterestAmount = _
(curLoanAmount * c_sngInterestRate) / c_intMonthsInTerm
关于常量,最后要说明的一点是,非常适合为常量赋予较宽的作用域,这与使用变量时的
情况不同。在使用变量时,最好应该缩小作用域。实际上,在一个应用程序中你决不应该两次
创建相同的常量。如果你发现自己复制了一个常量,请将原始的常量说明转至较宽的作用域,
直到该常量可供引用它的所有过程使用为止。
使用枚举值
枚举值与常量相似,因为它们都是被赋予值的有名实体。但是,枚举值的行为特性类似模
块中的公用常量组。它们被当作数据类型来处理,可以用它们创建具有相应的变量和属性值的
常量。也许你已经在使用 Visual Basic中的枚举值了。例如,当你使用 M s g B o x语句时,Vi s u a l
B a s i c的Auto List Members(自动列出成员)特性为 B u t t o n s参数显示一个下拉列表(通常称为
“代码帮助程序下拉列表”)(见图4 - 1)。
04 使用常量和枚举值 来自淘豆网m.daumloan.com转载请标明出处.