这周没有上课,阅读了《代码大全》第六章模块化设计
内聚性和耦合性
模块化设计的目标是使每个子程序都成为一个“黑盒子”,你知道进入盒子和从盒子里出来 的是什么,却不知道里边发生什么。它的接口非常简单,功能明确,对任何一个特定的输入, 你都可以精确地预测它相应的输出结果。
从所有模块中的子程序可以对它进行存取的角度来说,模块中数据很像是全局数据。但从不是程序中所有的子程序都可以对它进行存取的角度来说,它又不像是全局数据,它只对模块 中的子程序来说,才是可以存取的。因此,在模块设计中的最重要决定之一,便是决定哪个子程序需要对模块中数据进行直接存取。
信息隐蔽
在设计模块时,一项重要任务就是决定哪些特性应该是对模块外部公开的,哪些应该是作 为秘密隐藏起来的,一个模块中可能使用25个子程序而只暴露出其中的5个,其余20个都只 在内部使用。模块中也可能用到了几个数据结构,但却把它们全部隐藏起来。它可能会也可能 不会提供把数据结构信息通知给程序其余部分的子程序。模块设计的这一方面一般被称作“可见性”,因为它主要涉及了模块的功能特性是否是对外部分开或暴露的。
通过阅读这章知道创建模块的原因有许多是与创建子程序相同的。但模块概念的意义要比子程序深远得多,因为它可以提供一整套而不是单独一个功能,因此,它是比子程序更高层次的设计工具。