Il solito istinto è rimuovere qualsiasi duplicazione di codice che vedi nel codice. Tuttavia, mi sono trovato in una situazione in cui la duplicazione è illusoria .
Per descrivere la situazione in modo più dettagliato: sto sviluppando un'applicazione Web e la maggior parte delle visualizzazioni sono sostanzialmente le stesse: visualizzano un elenco di elementi che l'utente può scorrere e scegliere, un secondo elenco che contiene elementi selezionati e un "Salva "per salvare il nuovo elenco.
Mi è sembrato che il problema fosse facile. Tuttavia, ogni vista ha le sue peculiarità: a volte è necessario ricalcolare qualcosa, a volte è necessario memorizzare alcuni dati aggiuntivi, ecc. Questi, ho risolto inserendo hook di callback nel codice logico principale.
Ci sono così tante minuscole differenze tra le visualizzazioni che sta diventando sempre meno gestibile, perché ho bisogno di fornire callback praticamente per tutte le funzionalità, e la logica principale inizia a sembrare un'enorme sequenza di invocazioni callback. Alla fine non sto risparmiando tempo o codice, perché ogni vista ha il suo codice che viene eseguito, il tutto nei callback.
I problemi sono:
- le differenze sono così minuscole che il codice sembra quasi esattamente uguale in tutte le viste,
- ci sono così tante differenze che quando si guardano i dettagli, codificare non è un po 'simile
Come dovrei gestire questa situazione?
Avere la logica di base composta interamente da chiamate di callback è una buona soluzione?
O dovrei piuttosto duplicare il codice e eliminare la complessità del codice basato su callback?