Supongamos que tenemos un módulo de software A que implementa una función F. Otro módulo B implementa la misma función que F '.
Hay varias formas de deshacerse del código duplicado:
- Deje que A use F 'de B.
- Deje que B use F de A.
- Coloque F en su propio módulo C y deje que A y B lo usen.
Todas estas opciones generan dependencias adicionales entre módulos. Aplican el principio DRY a costa de aumentar el acoplamiento.
Por lo que puedo ver, el acoplamiento siempre aumenta o, al arrendar, se mueve a un nivel superior al aplicar DRY. Parece haber un conflicto entre dos de los principios más básicos del diseño de software.
(En realidad, no me sorprende que haya conflictos como ese. Esto es probablemente lo que hace que un buen diseño de software sea tan difícil. Me parece sorprendente que estos conflictos normalmente no se aborden en los textos introductorios).
Editar (para aclarar): supongo que la igualdad de F y F 'no es solo una coincidencia. Si F tendrá que modificarse, F 'probablemente tendrá que modificarse de la misma manera.