6. 代码的格式化
6.1 对代码进行格式化时,要达到的目的包括:
1) 通过代码分割成功能块和便于理解的代码段,使代码更容易阅读和理解;
2) 使用空行和注释行,将程序中逻辑上不相关的代码块分开。比如:变量声明部分和代码语句间的分隔;较长的过程中,完成不同功能的代码块间的分隔。要避免出现逻辑上混乱的分隔,如:某一逻辑功能代码块中间用空行进行了分隔,但是在相邻功能代码块之间却没有分隔,这样会给程序阅读者造成错觉。
3) 减少为理解代码结构而需要做的工作;
4) 使代码的阅读者不必进行假设;
5) 使代码结构尽可能做到格式清楚明了。
6.2 编程原则:
1) 要将多个语句放在同一行上
不论是变量声明,还是语句都不要在一行上书写多个。
2) 用行接续符
对较长语句,如API声明等,在代码窗体可视范围内给予换行,不要使别人必须通过滚动窗口才能查看到完整的代码。注意,当处理长字符串时,要使用
"字符串1" & _
"字符串2"
的格式。
3) 缩进后续行
当你将变量设置为某个值时,所有后续行的缩进位置应与第一行的变量值相同;
当你调用一个过程时,后续行缩进到第一个参数的开始处;
当你将变量或属性设置为等于表达式的计算结果时,请从后面分割该语句,以确保该表达式尽可能放在同一行上。
4) 在If语句后缩进;
在Else语句后缩进
在Select Case语句后缩进
在Case语句后缩进
在Do语句后缩进
已经用行接续符分割的语句的各个行要缩进
在With语句后缩进。
对从属于行标注的代码进行缩进。
5) 在执行统一任务的各个语句组之间插入一个空行。好的代码应由按逻辑顺序排列的进程或相关语句组构成。
7. 代码的注释
7.1 使用代码注释的目的:
1) 文字说明代码的作用(即为什么要用编写该代码,而不是如何编写);
2) 确指出该代码的编写思路和逻辑方法;
3) 人们注意到代码中的重要转折点;
4)使代码的阅读者不必在他们的头脑中仿真运行代码的执行过程.
7.2 编程原则:
1. 用文字说明代码的作用:
简单的重复代码做写什么,这样的注释几乎不能给注释增加什么信息.如果你使用好的命名方法来创建直观明了的代码那么这些类型的注释绝对增加不了什么信息.
2. 如果你想违背好的编程原则,请说明为什么
有的时候你可能需要违背好的编程原则,或者使用了某些不正规的方法,.遇到这种情况时,请用内部注释来说明你在做什么和为什么要这样做。
技巧性特别高的代码段,一定要加详细的注释,不要让其他开发人员花很长时间来研究一个高技巧但不易理解的程序段。
3. 用注释来说明何时可能出错和为什么出错
4. 在编写代码前进行注释
给代码加注释的方法之一是在编写一个过程前首先写上注释.如果你愿意,可以编写完整句子的注释或伪代码.一旦你用注释对代码进行了概述,就可以在注释之间编写代码.
5. 在要注释的代码前书写注释
注释一定出现在要注释的程序段前,不要在某段程序后书写对这段程序的注释,先看到注释对程序的理解会有一定帮助。
如果有可能,请在注释行与上面代码间加一空行。
6. 纯色字符注释行只用于主要注释
注释中要分隔时,请使用一行空注释行来完成,不要使用纯色字符,以保持版面的整洁、清晰。
7. 避免形成注释框
用星号围成的注释框,右边的星号看起来很好,但它们给注释增加了任何信息吗?实际上这会给编写或编辑注释的人增加许多工作。
8. 使用撇号来指明注释
不要使用Rem语句来注释。
9. 增强注释的可读性
注释是供人阅读的,而不是让计算机阅读的。
1) 使用完整的语句。虽然不必将注释分成段落(最好也不要分成段落),但你应尽量将注释写成完整的句子。
2) 避免使用缩写。缩写常使注释更难阅读,人们常用不同的方法对相同的单词进行缩写,这会造成许多混乱,如果必须对词汇缩写,必须做到统一。
3) 将整个单词大写,以突出它们的重要性。若要使人们注意注释中的一个或多个单词,请全部使用大写字母。
10. 对注释进行缩进,使之与后随的语句对齐。
注释通常位于它们要说明的代码的前面。为了从视觉上突出注释与它的代码之间的关系,请将注释缩进,使之与代码处于同一个层次上。
11. 为每个过程赋予一个注释标头
每个过程都应有一个注释标头。过程的注释标头可包含多个文字项,比如输入参数、返回值、原始作者、最后编辑该过程的程序员、上次修改日期、版权信息。
12. 当行尾注释用在上面这种代码段结构中时,它们会使代码更难阅读。
使用多个行尾注释时(比如用于过程顶部的多个变量说明),应使它们互相对齐。这可使它们稍容易阅读一些。
13. 何时书写注释
1) 请在每个If语句的前面加上注释。
2) 在每个Select Case语句的前面加上注释。与If语句一样,Select Case语句用于评估对程序执行产生影响的表达式。
3) 在每个循环(包括For…Next循环和Do循环)的前面加上注释。每个循环都有它的作用,许多情况下这个作用不清楚直观。
4) 在修改了全局变量的每个语句前面加上注释。全局变量很讨厌。但如果非常需要使用全局变量,请说明你为何要修改它。这将使代码的调试容易一些。
8. 循环结构
1. 循环结束后不要引用计数器变量。当For…Next循环结束时,计数器变量的最后值不等于end的值,它大于或小于Step的值。
2. 所有Next语句均应包含计数器变量。如果你在Next语句中省略了计数器变量,代码仍可执行,但它的可读性要差一些,因此更难维护.
3. 为了清楚起见,应对For…Next循环中的代码主体语句进行缩进。每当你的代码结构拥有一个开始语句和结束语句时,就必须对代码主体语句进行缩进。
4. 如果你必须提早退出For…Next循环,请使用Exit For语句。不要使用GoTo和一个标注来退出循环。
5. 请在循环的开始处计Do循环的退出条件。你常可选择究竟在循环的开始处还是结尾处放置退出条件。但在循环的开始处计算退出条件,这样的循环比较容易理解。
6. 当你在While和Until之间进行选择时,请使用能实现最简单的条件的这个关键字。
7. 为了保持代码见格的一致性,尽可能使用While子句来完成Do.Loop循环。