正交性与DRY原则成反比吗?

时间:2012-02-25 09:40:33

标签: dry design-principles principles orthogonal

根据实用程序员的书“正交性与DRY原则密切相关”。我不确定我是否理解作者希望读者的方式。所以我问上面的问题。

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

1 个答案:

答案 0 :(得分:0)

首先,子类型主要不是代码重用(尽管这是一个副作用)。你没有两个类来自第三个类只是因为它们有一些共同的代码;如果能够在所有上下文中为子类的实例采用子类的实例(子类型实例可以替换超类型),则可以执行此操作。

其次,Hunt&托马斯对“正交性”一词的使用侧重于不同的模块,而不是模块中的设计或实现考虑因素。更具体地说,它与模块之间缺乏相互依赖性有关。如果对一个模块的更改不影响另一个,则两个模块是正交的。更典型地,“orthogonality”具有不同的含义(语言特征可以任意组合,而不是在某些上下文中禁用某些特征,或者对不同类型具有不同版本的相同操作),并且您会说“coupling”(模块之间的相互依赖性,H& T的“正交性”的倒数)和“cohesion”。