4.5 浅模块
另一方面,浅模块是指其接口与它所提供的功能相比相对复杂的模块。例如,一个实现链表的类是浅的。操作一个链表不需要太多的代码(插入或删除一个元素只需要几行),所以链接列表的抽象并没有隐藏很多细节。链表接口的复杂性几乎和其实现的复杂性一样大。浅的类有时是不可避免的,但它们对管理复杂性没有提供多少帮助。
下面是一个浅方法的极端例子,取自一个软件设计课的项目:
从管理复杂性的角度来看,这种方法使事情变得更糟,而不是更好。该方法没有提供任何抽象,因为它的所有功能都可以通过其接口看到。例如,调用者可能需要知道该属性将被存储在data
变量中。考虑接口并不比考虑完整实现更简单。 如果方法被正确地记录下来,文档将比方法的代码更长。调用该方法所需要的按键次数甚至比调用者直接操作数据变量所需的次数还要多。该方法增加了复杂性(以供开发人员学习的新接口的形式),但没有提供任何补偿性的好处。
Last updated