Dove lavoro abbiamo circa 10 progetti VS in una soluzione identica per funzionalità (con alcune regole diverse in alcuni metodi) e che condividono molti metodi esatti. Condividono lo stesso spazio dei nomi e le classi vengono chiamate con if else's singolarmente.
Credo che sarebbe meglio e più sintetico avere un'interfaccia e una classe astratta con metodi protetti comuni a tutti i bambini.
I metodi che accettano una di queste classi possono quindi prendere un'interfaccia invece di avere 10 metodi diversi che ne prendono uno ed eseguono lo stesso metodo su ogni classe.
I metodi pubblici hanno tutti la stessa firma e restituiscono la stessa cosa.
Le future implementazioni della classe avranno una chiara guida su come implementarla (oltre a copiare e modificare una versione precedente) ed è più gestibile. La ragione per cui la sto considerando è che sto aggiungendo una versione extra e insoddisfatta dell'idea di copiare e incollare un sacco di confusione e di cambiare tutti i bit che ho bisogno di cambiare (solo in 2-3 lunghi metodi di ~ 20 metodi)
Ho difficoltà a esprimere le mie ragioni sul perché dovrei essere autorizzato a fare queste modifiche (probabilmente non ci vorrebbe più di un giorno e non cambierà la logica, quindi è necessario un test minimo). So intuitivamente che è meglio, ma non è abbastanza buono!
Come posso spiegare allo sviluppatore principale quando DRY è una buona cosa? Oppure ha ragione che dovremmo continuare a copiare e incollare le cose perché "abbiamo ereditato il codice in questo modo"?