Supponiamo di avere un modulo software A che implementa una funzione F. Un altro modulo B implementa la stessa funzione di F '.
Esistono diversi modi per eliminare il codice duplicato:
- Lascia che A usi F 'da B.
- Lascia che B usi F da A.
- Inserisci F nel suo modulo C e lascia che sia A che B lo utilizzino.
Tutte queste opzioni generano dipendenze aggiuntive tra i moduli. Applicano il principio DRY al costo di aumentare l'accoppiamento.
Per quanto posso vedere, l'accoppiamento è sempre aumentato o al leasing spostato a un livello superiore quando si applica DRY. Sembra esserci un conflitto tra due dei principi di base della progettazione del software.
(In realtà non trovo sorprendente che ci siano conflitti del genere. Questo è probabilmente ciò che rende così difficile una buona progettazione del software. Trovo sorprendente che questi conflitti normalmente non vengano affrontati nei testi introduttivi.)
Modifica (per chiarimenti): presumo che l'uguaglianza di F e F 'non sia solo una coincidenza. Se F dovrà essere modificato, F 'dovrà probabilmente essere modificato allo stesso modo.