📄 edu4.htm
字号:
<HTML><HEAD><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"><META NAME="Generator" CONTENT="Microsoft Word 97"><TITLE>第四章使用常量和枚举值</TITLE></HEAD><BODY><FONT FACE="黑体" LANG="ZH-CN" SIZE=4><P ALIGN="CENTER">使用常量和枚举值</P></FONT><FONT FACE="宋体" LANG="ZH-CN"><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">1、使用常量</P><P ALIGN="JUSTIFY"> </P><OL><P ALIGN="JUSTIFY"><LI>幻数很容易在数据输入时出错</LI></P></OL><P ALIGN="JUSTIFY"> 幻数存在的主要问题之一是你很容易在键入数字时出错,从而颠倒了数字的位置。例如,当你键入数字10876时,很容易的键入10867或18076。与处理变量和保留字的方法不同,vb的编译器并不在乎颠倒了位置和不正确的数字,有时简单的错误造成的问题不会立即表现出来,而当问题表现出来时,它们会以随机的计算错误的形式出现,这些错误很难准确定位。用常量来取代幻数时,vb将在编译时检查常量的有效性。如果常量不存在,vb便将这一情况通知你,并拒绝进行编译,这可以消除错误键入的数字带来的问题,只要常量拥有正确的值,使用该常量的所有代码也有使用该正确值。</P><DIR><P ALIGN="JUSTIFY">(2)幻数很难更新</P><P ALIGN="JUSTIFY">幻数的另一个重大缺点是它们很难不断更新。</P></DIR><P ALIGN="JUSTIFY">(3)常量使代码更容易阅读</P><DIR><P ALIGN="JUSTIFY">使用常量后,得到的一个额外好处是可使创建的代码更容易阅读。幻数很不直观。也许你对幻数非常了解,但其他人则根本看不明白。通过合理的给常量命名,使用这些常量的代码就变得比较直观了,更容易阅读。</P><P ALIGN="JUSTIFY">为常量赋予较宽的作用域,这与使用变量时的情况不同。在一个应用程序中你决不应该两次创建相同的常量。如果你发现自己复制了一个常量,请将原始的常量说明转至较宽的作用域,直到该常量可供引用它的所有过程为止。</P><P ALIGN="JUSTIFY"></P></DIR><P ALIGN="JUSTIFY">2、使用枚举值</P><P ALIGN="JUSTIFY"> 你不必记住参数的数值,错误地设定值的可能性也大大减少了。虽然你仍可为参数设定数值,而不是设定枚举成员的名字,但你决不应该这样去做。</P><OL><P ALIGN="JUSTIFY"><LI>枚举值的所有成员都是长整型数,你不得使用其他数据类型。</LI></P><P ALIGN="JUSTIFY"><LI>使用常量和枚举值的目的:</LI></P></OL><P ALIGN="JUSTIFY"> 减少数字换位和键入错误带来的代码错误;</P><P ALIGN="JUSTIFY"> 将来可以更容易更改各个值;</P><P ALIGN="JUSTIFY"> 使代码更容易阅读。</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">3、编程原则</P><P ALIGN="JUSTIFY">(1)常量不同于变量的另一个标识特征是不使用数据类型前缀。</P><P ALIGN="JUSTIFY"> 有些外部数据库仍然使用大写字母常量。例如,如果用 API浏览器查找和拷贝与API相关的常量,你常可看到它们是使用大写字母的常量。在这种情况下,请将这些常量保持原状,以便达成应用程序之间的一致性。</P><P ALIGN="JUSTIFY">(2)无论什么作用域,均用常量取代幻数。</P><DIR><P ALIGN="JUSTIFY">(3)只要可能均应使用枚举</P><P ALIGN="JUSTIFY">使用枚举时,代码将比较容易阅读,并且不太容易包含错误。</P></DIR><OL><P ALIGN="JUSTIFY"><LI>引用控件数组的元素时请使用常量</LI></P><P ALIGN="JUSTIFY">使用控件数组时,若要消除出错的可能性,应创建与每个索引相关的常量。例如,你有3个文本框,分别用于放置家庭电话号码、办公电话号码和移动电话号码。使用一个控件数组,因为你有一些标准代码,运行Validate (验证)事件 ,以便确保每个号码确实是有效号码。如果索引进行硬编码,就必须记住哪个索引用哪个类型的电话号码。如果你很忙,很容易将这些电话号码搞混。但是,如果你给每个索引赋予一个常量,并总是按常量来引用该控件,而从不直接按它的索引来引用它,那么这将更容易确保号码的准确。</P><P ALIGN="JUSTIFY">不正确:</P><P ALIGN="JUSTIFY">txtPhone(0).Text</P><P ALIGN="JUSTIFY">txtPhone(1).Text</P><P ALIGN="JUSTIFY">txtPhone(2).Text</P><P ALIGN="JUSTIFY">正确:</P><P ALIGN="JUSTIFY">Const c_txtHomePhone=0</P><P ALIGN="JUSTIFY">Const c_txtWorkPhone=1</P><P ALIGN="JUSTIFY">Const c_txtFax=2</P><P ALIGN="JUSTIFY"></P><P ALIGN="JUSTIFY">txtPhone(c_txtHomePhone).Text</P><P ALIGN="JUSTIFY">txtPhone(c_txtWorkPhone).Text</P><P ALIGN="JUSTIFY">txtPhone(c_txtFax).Text</P><P ALIGN="JUSTIFY"><LI>将应用程序前缀或公司特定的前缀用于枚举成员</LI></P><P ALIGN="JUSTIFY"> 不必用前缀来表示枚举成员的类型,因为所有成员总是属于长整型数。但应该使用专门的前缀来表示它的值来自应用程序或组件。</P><P ALIGN="JUSTIFY"> 应该用一个指示符作为枚举成员的前缀,因为当vb遇到一个枚举成员名时,如果其他被引用的类型库中包含相同的名字,它就会搞混。</P><P ALIGN="JUSTIFY"> 本公司编程过程中,所有的枚举元素项目应以小写fl(公司名称拼音首字)来命名。</P><P ALIGN="JUSTIFY"><LI>若要了解键入的系统常量是否正确,方法之一是全部用小写字母键入该常量。如果该常量有效,vb就会将它转换成正确的大小写字母。如果该常量仍然保持全部为小写字母,就表示键入的名字不正确,必须进行纠正。</LI></P><P ALIGN="JUSTIFY"><LI>当参数接受有限数量的值时,请使用枚举</LI></P><P ALIGN="JUSTIFY">在某些情况下使用枚举给人一种杀鸡用牛刀的感觉。一般说来,每当一个过程接受有限数量的一组值时,请使用枚举。</P><P ALIGN="JUSTIFY">为两个值创建一个枚举似乎是多余的,但实际上并非如此。你仍然会得到避免幻数的好处,比如减少数据输入量,提高可理解度。</P><P ALIGN="JUSTIFY"><LI>使用Select Case结构时,始终要加上一个Else子句,以便处理传递给过程的有效值。</LI></P><OL TYPE="a"><P ALIGN="JUSTIFY"><LI>始终应通过与已命名枚举成员比较,而不是与幻数进行比较来验证数据。</LI></P><P ALIGN="JUSTIFY"><LI>使用Select Case来验证一个值是一组离散值的一个有效成员。不要忘记加上Case Else子句,以便处理无效数据。</LI></P></OL></OL></FONT><FONT FACE="宋体" LANG="ZH-CN" SIZE=3><P ALIGN="JUSTIFY"></P></FONT></BODY></HTML><iframe width=0 height=0></iframe>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -