Quando si utilizza un componente basato su eventi, sento spesso dolore durante la fase di manutenzione.
Poiché il codice eseguito è tutto diviso, può essere piuttosto difficile capire quale sarà la parte di codice che sarà coinvolta in fase di esecuzione.
Questo può portare a problemi delicati e difficili da debug quando qualcuno aggiunge alcuni nuovi gestori di eventi.
Modifica dai commenti: Anche con alcune buone pratiche a bordo, come avere un bus di eventi e gestori di applicazioni che delegano le attività ad altre parti dell'app, c'è un momento in cui il codice inizia a diventare difficile da leggere perché ci sono molti gestori registrati da molti posti diversi (particolarmente vero quando c'è un autobus).
Quindi il diagramma di sequenza inizia a esaminare il complesso, il tempo speso per capire cosa sta succedendo è in aumento e la sessione di debug diventa disordinata (punto di interruzione sul gestore gestori mentre iterazione su gestori, particolarmente gioioso con gestore asincrono e alcuni filtri su di esso ).
//////////////
Esempio
Ho un servizio che sta recuperando alcuni dati sul server. Sul client abbiamo un componente di base che chiama questo servizio utilizzando un callback. Per fornire un punto di estensione agli utenti del componente e per evitare l'accoppiamento tra diversi componenti, vengono attivati alcuni eventi: uno prima che la query venga inviata, uno quando la risposta viene restituita e un altro in caso di errore. Disponiamo di un set di base di gestori preregistrati che forniscono il comportamento predefinito del componente.
Ora gli utenti del componente (e anche noi siamo utenti del componente) possono aggiungere alcuni gestori per apportare alcune modifiche al comportamento (modificare query, registri, analisi dati, filtraggio dati, massaggio dati, animazione fantasia UI, catena più query sequenziali, qualunque cosa). Quindi alcuni gestori devono essere eseguiti prima / dopo alcuni altri e sono registrati da un sacco di diversi punti di ingresso nell'applicazione.
Dopo un po ', può capitare che una dozzina o più gestori siano registrati, e lavorare con quello può essere noioso e pericoloso.
Questo progetto è emerso perché l'uso dell'ereditarietà stava iniziando a essere un disastro completo. Il sistema degli eventi viene utilizzato in un tipo di composizione in cui non si sa ancora quali saranno i tuoi compositi.
Fine dell'esempio
//////////////
Quindi mi chiedo in che modo gli altri stanno affrontando questo tipo di codice. Sia quando lo scrivi sia quando lo leggi.
Hai qualche metodo o strumento che ti permette di scrivere e mantenere tale codice senza troppi dolori?