Penso che tu stia prendendo il principio della ripetizione del codice troppo lontano. Pensa al punto di evitare la ripetizione del codice. Il punto è ridurre la quantità di codice che deve essere controllato quando c'è un cambiamento nella logica e aumentare la comprensione mediante il factoring di blocchi chiaramente intesi allo scopo.
Le cadute del factoring per evitare la ripetizione sono che se uno dei blocchi condivisi deve cambiare, ora hai bisogno di un'eredità ancora più complessa o di un passaggio tra implementazione standard e non standard.
Quindi valuta attentamente la possibilità che la logica per anche una di questi blocchi cambi senza gli altri contro i benefici di comprensione acquisiti mettendo a fattor comune questa comunanza. Se un'implementazione potrebbe dividersi dagli altri, è meglio che stiate semplicemente ripetendo il codice.
Pur mantenendo questo codice ripetuto, man mano che diventa più complesso e il dominio del problema diventa più definito, puoi quindi trovare più appropriato il fattore delle sezioni ripetute, ora più complesse, ma anche più definite fuori.
Di solito cerco di mantenere la stessa identità di editor di testo per un po 'finché non riesco a vedere se qualcosa che sembra ripetitivo si riveli meritevole di factoring. Continuo la ripetizione, ma tengo d'occhio il futuro di quel blocco mantenendolo più facilmente testuale in seguito.
La maggior parte del tempo, la stessa cosa, e il possibile factoring, cominciano a dissiparsi, come regole di business reali, capricciose e logiche altamente dipendenti, spesso arbitrarie; si aggiungono come affrontare le stranezze di diverse implementazioni di database comuni (ANSI_NULLS o alcune di queste); forzare quella che sembrava una pura logica in un pasticcio contorto, cercando di fornire una logica decisionale ragionevole e giustificabile di fronte al caos dello stato del settore.
Mi sembra che se le persone cercassero di calcolare ciò che stai cercando di calcolare, avremmo un'intera libreria di costrutti senza valore come
Do1Then2If2False Do1IfTrueDo2.
Deve essere più complesso e più chiaro che il blocco non cambierà per giustificare il factoring.
È software . Puoi tornare indietro e modificare un paio di blocchi uguali in questo momento. Ci vorranno 5 minuti. E puoi risparmiare ore di factoring sprecato, e quindi ore in più di sprecato ereditarietà e cambio di sviluppo, lasciandolo e assicurandoti di avere una buona tastiera anti-RSI.