在看《代码大全2》的 5.3 节时,提到了 3 个衡量模块间的耦合度的标准,即规模(模块之间的连接数)、可见性(两个模块之间的连接的显著程度)、灵活性(模块之间的连接是否容易改动)。然后在灵活性部分举的例子?:
假设有一段子程序 LookupVacationBenefit() ,通过输入雇佣日期和工作级别来查询员工的休假数量。假设另一个模块已有一个包含了雇用日期和工作级别的 employee 对象,将这种对象传给 LookupVacationBenefit() 。
按照规模和灵活性标准,这两个模块之间的耦合关系是很松散的。但是如果有第三个模块也需要使用 LookupVacationBenefit() ,这一模块没有 employee 对象,却包含了雇佣日期和工作级别。这样它就必须拼凑一个 employee 对象来和 LookupVacationBenefit() 协同工作。
最后给出的解决方案是修改 LookupVacationBenefit() ,使它以雇佣日期和工作级别作为参数。
这个例子中是用灵活性替代了规模和可见性。那么在实际的编程过程中,该如何取舍呢?