Per semplificare le cose, diciamo che sono responsabile del mantenimento di due applicazioni, AwesomeApp e BadApp (sono responsabile di più e non di quello che non è il loro vero nome).
AwesomeApp è un progetto greenfield su cui ho lavorato con altri membri del mio team. È stato codificato utilizzando tutte le parole d'ordine di fantasia, Multistrato, SOA, SOLID, TDD e così via. Rappresenta la direzione in cui vogliamo andare in squadra.
BadApp è un'applicazione utilizzata da molto tempo. L'architettura soffre di molti peccati, ovvero tutto è strettamente accoppiato tra loro e non è raro ottenere un errore di dipendenza circolare dal compilatore, è quasi impossibile fare un test unitario, classi grandi, codice duplicato e così via. Abbiamo un piano per riscrivere l'applicazione seguendo gli standard stabiliti da AwesomeApp, ma ciò non accadrà per un po '.
Devo andare su BadApp e correggere un bug, ma dopo aver trascorso mesi a programmare ciò che considero corretto, davvero non voglio continuare a perpetuare pratiche di codifica sbagliata. Tuttavia, il modo in cui AwesomeApp è codificato è molto diverso dal modo in cui è codificato BadApp. Temo che l'implementazione del modo "corretto" possa causare confusione per altri sviluppatori che devono mantenere l'applicazione.
Domanda: è meglio mantenere la codifica nel modo sbagliato per rimanere coerenti con il resto del codice nell'applicazione (sapendo che verrà sostituito) o è meglio codificare nel modo giusto con una comprensione potrebbe causare confusione perché è molto diversa?
Per darti un esempio. Esiste una grande classe (1000+ linee) con diverse funzioni. Una delle funzioni è calcolare una data basata su un valore enumerato. Attualmente la funzione gestisce tutti i vari calcoli. La funzione non fa affidamento su altre funzionalità all'interno della classe. È autonomo. Voglio suddividere la funzione in funzioni più piccole (per lo meno) e inserirle nelle proprie classi e nascondere quelle classi dietro un'interfaccia (al massimo) e utilizzare il modello factory per creare un'istanza delle classi data. Se l'ho appena suddiviso in funzioni più piccole all'interno della classe, seguirebbe lo standard di codifica esistente. I passaggi extra devono iniziare a seguire alcuni dei principi SOLID.