VB编程规范
1. 开发人员操作规程
1.1 VB选项参数的定义:
选项能数的规范有两方面的意义:一方面是及时排除程序中存在的拼写错误、语法错误,及时保存程序的修改;另一方面是将所有开发人员的开发界面一致化,以避免开发人员在其它开发人员的电脑上工作时因选项不同而造成的差错。
1) 打开“工具”菜单,在第一页“编辑器”中选定所有选项,并在Tab宽度中输入4。代码缩进时,先选中要缩进的代码块,然后使用快捷键是Tab(右移)和Shift+Tab(左移);如果手工输入空格完成缩进,请以4个空格为单位。
2) 在第二页“编辑器格式”中,不要修改任何选项,一律使用VB默认值,否则可能在其他人操作时因界面不一致,而产生操作失误。
3) 在第三页“通用”中,清除“请求时编译”前的复选框(此时“后台编译”选项会变成灰色),以确保每次程序执行时都是全编译执行。
4) 第四页“可连接的”,可按自己习惯设定,建议清除所有复选框,这样会编辑代码时代码窗口可获得最大的显示空间。
5) 第五页“环境”中“启动程序时”中一定选择“提示保存改变”(第二项),这样每次程序被修改后再运行时,VB都会提示保存,避免对程序的修改因偶然因素而丢失。
6) 第六页“高级”中各选项由开发人员按自己习惯定义,但要注意当使用SDI方式进行开发时,每次在设计环境中用鼠标拖动窗体都会导致窗体的StartUpPosition变为0-手动,原来在屏幕上居中(StartUpPosition为2-屏幕中心)的窗体运行时可能会改变位置。
1.2 快捷键的使用
使用快捷键提高操作速度。
F1 帮助
F2 显示对象浏览器
F4 查看当前选中控件的属性窗体
F5 运行
F7 由窗体设计切换到对应的代码窗体
F8 单步执行
Shift+F2 查看当前光标所在的变量或函数、子过程的定义
Shift+F7 由代码窗体切换到对应的窗体设计界面
Shift+F8 逐过程单步执行
Ctrl+F5 全编译执行
Ctrl+F 在代码窗体进行查找
Ctrl+G 查看立即窗体
Ctrl+R 查看工程窗口 2. 设计模块和过程
2.1 建具有很强内聚力的模块
过程的重要性往往比模块的重要性更容易理解,过程是指执行一个统一函数的一段代码。模块常被错误的视为是一个仅仅用于存放过程的容器。有些开发人员甚至把这种思路作了进一步的发挥,将他们的所有过程放入单个模块之中。
之所以不能正确的认识模块的功能,原因之一是模块的实现实际上并不影响程序的执行。当一个工程被编译时,如果所有过程都放在单个模块中或者放在几十个模块中,这没有任何关系。虽然模块的数量对代码的执行并无太大的影响,但是当创建便于调试和维护的代码时,模块的数量有时会带来很大的影响。
模块应该用来将相关的过程组织在一起。
当模块包含一组紧密关联的过程时,该模块可以说具有强大的内聚力。当模块包含许多互不相关的过程时,该模块便具有较弱的内聚力。应该努力创建内聚力比较强的模块。
大多数工程都包含许多并不十分适合与其他过程组合在一起的过程。在这种情况下,可以为这些不合群的过程创建一个综合性收容模块。
创建模块时,应知道“模块化”这个术语的含义是什么。模块的基本目的是创建相当独立的程序单元。从根本上来讲,模块可以添加给另一个工程,并且可以通过直接调用它的公用过程来使用它。
2.2 创建松散连接和高度专用的过程
1. 使所有过程都执行专门的任务
每个过程都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行许多不同任务的过程。
创建专用过程有许多好处。首先调试将变得更加容易。
2. 尽量使过程成为自成一体的独立过程
当一个过程依赖于其他过程的调用时,称为与其他过程紧密连接的过程。紧密连接的过程会使调试和修改变得比较困难,因为它牵涉到更多的因素。松散连接的过程优于紧密连接的过程,但你不可能使每个过程都成为独立的过程。
若要使过程具备较强的独立性,方法之一是尽量减少全局变量和模块级变量。
创建过程时,设法将每个过程视为一个黑箱,其他例程不应要求了解该过程的内部工作情况,该过程也不应要求了解它外面的工程情况。这就是为什么你的过程应依靠参数而不应依靠全局变量的原因。
创建专用过程时,请考虑下列指导原则:
1) 将复杂进程放入专用过程。如果应用程序使用复杂的数学公式,请考虑将每个公式放入它自己的过程中。这样使用这些公式的其他过程就不包含用于该公式的实际代码。这样也可以更容易发现与公式相关的问题。
2) 将数据输入/输出(I/O)放入专用过程。
3) 将专用过程中可能要修改的代码隔离。如果你知道某个进程经常变更,请将这个多变的代码放入专用过程,以便以后可以更容易的进行修改,并减少无意中给其他进程带来问题的可能性。
4) 将业务规则封装在专用过程中。业务规则常属于要修改的代码类别,应与应用程序的其余部分隔开。其他过程不应知道业务规则,只有要调用的过程才使用这些规则。
3. 设计模块和过程时,要达到下列目的:
1) 创建更加容易调试和维护的过程
2) 创建具有强大内聚力的模块
3) 创建高度专用的过程
4) 创建松散连接的过程
5) 尽量使过程具有独立性
6) 提高过程的扇入性
7) 降低过程的扇出性