第二章写得很精彩! 摘录部分内容如下: 2.3 编程原则 2.3.1 为过程和模块赋予表义性强的名字 为了使代码更加容易理解,最容易的方法之一是为你的过程赋予表义性强的名字。函数名 D o I t、G e t I t和P r i n t I t的可读性很难与C a l c u l a t e S a l e s Ta x、R e t r i e v e U s e r I D和P r i n t S p r e a d S h e e t相比。 下载 给过程命名时,首先要记住D O S系统的时代已经过去了(虽然它并没有完全消亡,但基本 上不怎么使用了)。从D O S系统时代过来的许多编程人员仍然必须设法冲破阻碍程序开发的某 些习惯,而不是从D O S开发中得到好处。例如,过去常用的一些编程语言限制了在定义过程名 时可以使用的字符数。我们仍然看到一些程序员选择C A L C TA X、G E T I T、G E T R E C和 D E L R E C之类的过程名。如果你也这样做的话,那么现在是你改变这种做法的时候了。由缩写 过程名组成的代码很难理解和维护,没有理由再这样做了。当然, C a l c u l a t e S a l e s Ta x, R e t r i e v e E m p l o y e e和D e l e t e E m p l o y e e之类的过程名比老式过程名更容易理解。 给过程正确地命名,可使程序工程的调试和维护工作大大改观。请认真对待过程命名的工 作,不要为了减少键入操作量而降低过程的可理解度。 不正确: Private Function InvoicePost()As Boolean Private Function PrintIt()As Boolean Public Sub SaveItem() Public Sub DeleteRecord() 正确: Private Function PostInvoice()As Boolean Private Function PrintSpreadsheet()As Boolean Public Sub SavePicture() Public Sub DeleteContact() 实际应用举例 (1) 给过程命名时应该大小写字母混合使用。过去,有些编程语言只允许用大写字母给过 程命名。Visual Basic中不存在这种规定,你应该混合使用大小写字母给所有的过程命名。如果 句子全部使用大写字母,那么阅读起来就非常困难,而大小写字母混合使用的句子,阅读起来 就很容易。对于过程的名字来说,情况也是一样。另外,全部是小写字母的过程名几乎与全部 是大写字母的过程名一样难读。例如,我们可以将E m p l o y e e A g e与E M P L O Y E E A G E 和 e m p l o y e e a g e作一比较。另外,在变量名中使用下划线来代替空格(例如E m p l o y e e _ A g e),这 也是可以的。不过,如果使用了下划线,那么应该在其他地方也统一使用下划线。请注意,不 能在变量名中使用空格。 不正确: Private Function POSTINVOICE()As Boolean Public Sub savepicture() 正确: Private Function PostInvoice()As Boolean Public Sub SavePicture() (2) 定义过程名时不要使用缩写。如果你问两个人,他们是如何给某个单词缩写的,可能 会得到两个不同的答复。如果你认为应用程序中的某些工程应该使用缩写,那么请将这些情况 加上注释,并确保每个人在所有时间内都使用这些缩写。决不要在某些过程中对某些单词进行 缩写,而在别的过程中却不使用缩写。 不正确: Private Function SaveEmp()As Boolean Public Sub DelContact() Public Sub CalcTax() 14计计第一部分设计 下载 正确: Private Function SaveEmployee()As Boolean Public Sub DeleteContact() Public Sub CalculateSalesTax() 2.3.2 为每个过程赋予单个退出点 对事件驱动的应用程序中的代码进行调试是非常麻烦的,因为过程是从别的过程中调用 (扇出)的,代码的执行往往像台球桌上的台球弹来弹去。Exit Function和Exit Sub这样的简单 语句可能进一步增强这种复杂性。如果每个过程拥有单个进入点,这将是很有意义的。你不希 望不同的调用过程能够进入不同代码位置中的某个过程,这会带来很大的问题。每个过程也应 该拥有单个退出点,尽管这个问题人们并不十分重视。 确认控件总是以相同的方式在同一行代码上退出一个过程时,调试就会变得简单得多。如 果让一个过程从代码中的任何位置退出,那么你怎样能够确定清除代码总是在过程退出之前执 行呢?当然,也许你能够记住过程中确切的运行情况,但是,当另一个编程员对过程进行编辑 时,增加了一个Select Case子句,并且使用Exit Sub语句来退出该过程,那将会出现什么问题 呢?应该执行以便清除该过程的任何代码并没有使用,因此很容易出现错误。 解决这个问题的办法是在每个过程中创建一个P R O C _ E X I T标注。在这个标注下面,放入 所有必要的清除代码和一个相应的E x i t语句(Exit Sub、Exit Function和Exit Property)。每当你 需要退出该过程时,只需加上一个G o To PROC_Exit语句,而不必直接调用E x i t命令。 创建单个退出点,可使过程更像是黑箱。代码的执行从一个门进来,代码的退出则从另一 个门出去,因此产生的错误比较少,调试也不太难。创建单个退出点的操作是非常复杂的,但 是它的好处是极大的。得到的好处大于你付出的努力,这种情况并不是总能碰到,因此务必充 分利用它。 不正确: 相关链接:https://bbs.21ic.com/upfiles/img/200711/2007112413495467.rar