最早的设计质量的标志之一就是耦合。它在最早的结构化设计中和内聚一起出现,并且从未消失过。我在考虑软件设计时仍然总是想到它。有几种方法描述耦合,不过它可以缩减成这样:如果在一个程序中的一个模块的变化需要另一个模块的变化,那么耦合存在了。这可能是两个模块在一点做相似的事情,因此在一个模块中的代码是另一个模块中的代码
的有影响的重复。这是一个代码重复的最主要和明显的罪恶的例子。重复总是意味着耦合,因为一段重复代码的改变意味着另一段代码的改变。而且也很难找出重复代码,因为可能在两段代码间没有显而易见的关系
耦合也出现在当在一个模块中的代码使用了另外模块的代码,可能通过调用一个函数或存取一些数据。在这一点上,变得很清楚,不像重复代码,你不能总是避免耦合。你能将一个程序分成许多模块,而这些模块需要用某种方式通信—否则,你只不过是有许多程序。耦合是需要的,因为如果你禁止模块之间的耦合,你只有将所有的东西放一个大模块中。那么,
将有大量的耦合—只藏在地毯下。
因此耦合是我们需要控制的东东,不过怎样控制呢?我们需要任何地方都担心有耦合吗,