北大青鸟 Aptech学术部
2. 设计模块和过程
2.1 建具有很强内聚力的模块
过程的重要性往往比模块的重要性更容易理解,过程是指执行一个统一函数的一段
代码。模块常被错误的视为是一个仅仅用于存放过程的容器。有些开发人员甚至把这种思
路作了进一步的发挥,将他们的所有过程放入单个模块之中。
之所以不能正确的认识模块的功能,原因之一是模块的实现实际上并不影响程序的
执行。当一个工程被编译时,如果所有过程都放在单个模块中或者放在几十个模块中,这
没有任何关系。虽然模块的数量对代码的执行并无太大的影响,但是当创建便于调试和维
护的代码时,模块的数量有时会带来很大的影响。
模块应该用来将相关的过程组织在一起。
当模块包含一组紧密关联的过程时,该模块可以说具有强大的内聚力。当模块包含
许多互不相关的过程时,该模块便具有较弱的内聚力。应该努力创建内聚力比较强的模块。
大多数工程都包含许多并不十分适合与其他过程组合在一起的过程。在这种情况下,
可以为这些不合群的过程创建一个综合性收容模块。
创建模块时,应知道“模块化”这个术语的含义是什么。模块的基本目的是创建相当
独立的程序单元。从根本上来讲,模块可以添加给另一个工程,并且可以通过直接调用它
的公用过程来使用它。
2.2 创建松散连接和高度专用的过程
1. 使所有过程都执行专门的任务
每个过程都应执行一项特定的任务,它应出色的完成这项任务。应避免创建执行
许多不同任务的过程。
创建专用过程有许多好处。首先调试将变得更加容易。
2. 尽量使过程成为自成一体的独立过程
当一个过程依赖于其他过程的调用时,称为与其他过程紧密连接的过程。紧密连
接的过程会使调试和修改变得比较困难,因为它牵涉到更多的因素。松散连接的过程优
于紧密连接的过程,但你不可能使每个过程都成为独立的过程。
若要使过程具备较强的独立性,方法之一是尽量减少全局变量和模块级变量。
创建过程时,设法将每个过程视为一个黑箱,其他例程不应要求了解该过程的内
部工作情况,该过程也不应要求了解它外面的工程情况。这就是为什么你的过程应依靠
参数而不应依靠全局变量的原因。
创建专用过程时,请考虑下列指导原则:
1) 将复杂进程放入专用过程。如果应用程序使用复杂的数学公式,请考虑将每
个公式放入它自己的过程中。这样使用这些公式的其他过程就不包含用于该
公式的实际代码。这样也可以更容易发现与公式相关的问题。
2) 将数据输入/输出(I/O)放入专用过程。
3) 将专用过程中可能要修改的代码隔离。如果你知道某个进程经常变更,请将
这个多变的代码放入专用过程,以便以后可以更容易的进行修改,并减少无
意中给其他进程带来问题的可能性。
VB 编程规范 V1.0