Sono sicuro che ci sia un nome per questo anti-pattern da qualche parte; tuttavia non ho abbastanza familiarità con la letteratura anti-pattern per saperlo.
Considera il seguente scenario:
or0è una funzione membro in una classe. Nel bene e nel male, dipende fortemente dalle variabili dei membri della classe. Il programmatore A arriva e necessita di funzionalità come or0ma piuttosto che chiamare or0, il programmatore A copia e rinomina l'intera classe. Immagino che non chiami or0perché, come ho detto, dipende fortemente dalle variabili membro per la sua funzionalità. O forse è una programmatrice junior e non sa come chiamarla da un altro codice. Quindi ora abbiamo or0e c0(c per copia). Non posso criticare completamente il programmatore A per questo approccio: siamo tutti sotto scadenze strette e hackeriamo il codice per completare il lavoro.
Diversi programmatori mantengono or0quindi è ora la versione orN. c0è ora la versione cN. Sfortunatamente la maggior parte dei programmatori che hanno mantenuto la classe contenente or0sembravano completamente inconsapevoli di c0- qual è uno degli argomenti più forti a cui posso pensare per la saggezza del principio DRY. E potrebbe anche esserci stata una manutenzione indipendente del codice in c. Ad ogni modo sembra che or0e c0sono stati mantenuti indipendenti l'uno dall'altro. E, gioia e felicità, si sta verificando un errore in cNcui non si verifica orN.
Quindi ho alcune domande:
1.) C'è un nome per questo anti-pattern? L'ho visto accadere così spesso che troverei difficile credere che questo non sia un anti-modello chiamato.
2.) Vedo alcune alternative:
a.) Risolto orNil problema per prendere un parametro che specifica i valori di tutte le variabili membro di cui ha bisogno. Quindi modificare cNper chiamare orNcon tutti i parametri necessari passati.
b.) Prova a trasferire manualmente le correzioni da orNa cN. (Intendiamoci, non voglio farlo, ma è una possibilità realistica.)
c.) Ricopia orNper: cNnuovamente, schifo ma lo elencherò per completezza.
d.) Prova a capire dove cNè rotto e poi riparalo indipendentemente da orN.
L'alternativa a sembra la migliore soluzione a lungo termine ma dubito che il cliente mi lascerà implementare. Mai tempo o denaro per sistemare le cose nel modo giusto, ma sempre tempo e denaro per riparare lo stesso problema 40 o 50 volte, giusto?
Qualcuno può suggerire altri approcci che potrei non aver preso in considerazione?
