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 maggiore dettaglio: sto sviluppando un'applicazione web e la maggior parte delle visualizzazioni sono fondamentalmente le stesse: visualizzano un elenco di elementi che l'utente può scorrere e scegliere, un secondo elenco che contiene elementi selezionati e un pulsante "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 i hook di callback nel codice logico principale.
Ci sono così tante minime differenze tra le visualizzazioni che sta diventando sempre meno manutenibile, perché ho bisogno di fornire callback per praticamente tutte le funzionalità, e la logica principale inizia ad assomigliare ad una sequenza enorme di invocazioni di richiamata. Alla fine non sto risparmiando tempo o codice, perché ogni vista ha il suo codice che viene eseguito, tutto in callback.
I problemi sono:
- le differenze sono così minute che il codice sembra quasi esattamente simile in tutte le visualizzazioni,
- ci sono tante differenze che quando si guardano i dettagli, il codice è non un po 'simile
Come dovrei gestire questa situazione?
La logica di base composta interamente da callback call è una buona soluzione?
O dovrei piuttosto duplicare il codice e eliminare la complessità del codice basato su callback?