正交性与DRY原理成反比



根据《实用程序员》一书"正交性与DRY原理密切相关"。我不确定我是否按照作者希望读者的方式理解它。所以我问了上面的问题。

例如,您有类A和类B。这两个类都有类似的方法。使用DRY原理,我创建了一个类C,然后将类似的方法从类a和类B移动到类C,并将类C指定为a和B的父类。它是否变得不正交?

首先,分类型主要不是关于代码重用(尽管这是一个附带的好处)。你不会因为有一些共同的代码就有两个类从第三个派生而来;当子类的实例应该能够在所有上下文中作为父类的实例(子类型实例可以替换为超类型)时,可以执行此操作。

其次,Hunt&Thomas对"正交性"一词的使用侧重于不同的模块,而不是模块内的设计或实现考虑。更具体地说,这与模块之间缺乏相互依存性有关。如果对其中一个模块的更改不会影响另一个模块,则两个模块是正交的。更典型的是,"正交性"有不同的含义(语言特征可以任意组合,而不是在特定的上下文中禁止某些特征,或者对不同的类型使用相同操作的不同版本),你会说"耦合"(模块之间的相互依存性,H&T的"正交性的倒数")和"内聚性"。

最新更新