Penso che stai spingendo troppo oltre il principio della ripetizione del codice. Pensa al punto di evitare la ripetizione del codice. Il punto è ridurre la quantità di codice che deve essere verificato quando si verifica un cambiamento nella logica e aumentare la comprensione prendendo in considerazione blocchi ovviamente intesi in modo simile.
Gli svantaggi del factoring al fine di evitare la ripetizione sono che se uno dei blocchi condivisi deve cambiare, ora è necessaria un'eredità ancora più complessa o un passaggio dall'implementazione standard a quella non standard.
Così attentamente soppesare la possibilità che la logica anche se uno di questi blocchi cambi senza che gli altri si confrontino con i benefici di comprensione ottenuti prendendo in considerazione questa comunanza. Se un'implementazione potrebbe dividersi dalle altre, è molto meglio semplicemente ripetere il codice.
Pur mantenendo questo codice ripetuto, man mano che diventa più complesso e il dominio del problema diventa più definito, potresti trovare più appropriato considerare le sezioni ripetute, ora più complesse, ma anche più definite.
Di solito cerco di mantenere la stessa editor di testo per un po 'finché non riesco a vedere se qualcosa che sembra essere ripetitivo risulta essere degno di essere preso in considerazione. Tengo solo la ripetizione, ma tengo d'occhio il futuro di quel blocco mantenendolo testualmente facile da abbinare in seguito.
Molte volte, la stessa uguaglianza e l'eventuale factoring iniziano a dissipare, come regole aziendali reali, capricciose e logiche altamente dipendenti, spesso arbitrarie; come la gestione delle stranezze di diverse implementazioni di database comuni (ANSI_NULLS o alcuni di questi vengono in mente) vengono aggiunti; forzare quella che sembrava una pura logica in un pasticcio contorto, cercando di fornire una logica decisionale ragionevole e difendibile di fronte al disordine dello stato del settore.
Mi sembra che se le persone provassero a capire cosa si sta cercando di considerare, avremmo un'intera libreria di costrutti inutili come Do1Then2If2False Do1IfTrueDo2.
Deve essere più complesso e più chiaro che il blocco non cambierà per giustificarlo.
È un software . Puoi tornare indietro e modificare un paio di blocchi che sono gli stessi in questo momento. Ci vorranno 5 minuti. E puoi risparmiare ore di factoring sprecato, e quindi ore in più di eredità sprecata e cambio di sviluppo, semplicemente lasciandolo e assicurandoti di avere una buona tastiera anti-RSI.