Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Linee guida nella scrittura di codice #08: Gli eventi

Pillole sulla buona scrittura del codice: gli eventi
Pillole sulla buona scrittura del codice: gli eventi
Link copiato negli appunti

Gli eventi sono un sistema per mandare in esecuzione codice nel momento in cui viene eseguita una specifica azione e questo codice può essere eseguito prima o dopo l'azione. Il codice dell'evento viene eseguito tramite un delegato che è associato al metodo da eseguire nel momento in cui l'evento viene generato. La firma del metodo che gestisce l'evento oltre naturalmente ad essere uguale a quella del delegato a cui è associato, deve seguire le seguenti convenzioni:

  • Il tipo di ritorno del metodo è void
  • Il primo parametro deve essere un Object denominato sender e che corrisponde all'oggetto che ha generato l'evento
  • Il secondo parametro denominato e deve essere di tipo EventArgs o comunque deve essere una classe derivata da EventArgs. Questo parametro conterrà  i dati relativi all'evento generato
  • Il metodo deve accettare soltanto i due parametri suddetti

Per gli eventi utilizzare sempre il verbo "generare" al posto del verbo "attivare" o di altri simili.

Possibilmente utilizzare System.EventHandler<T> per il gestore d'evento piuttosto che crearne uno manualmente. Naturalmente questa linea guida può essere seguita solo se si sta sviluppando in una delle versioni del .NET Framework che supportano i generics.

Utilizzare possibilmente una classe derivata da System.EventArgs piuttosto che System.EventArgs direttamente. In questo modo non ci si preclude la possibilità  di aggiungere in futuro eventuali dati da passare al generarsi dell'evento. Se si utilizza direttamente il tipo System.EventArgs, infatti, non sarà  possibile passare dati al gestore dell'evento nel momento in cui l'evento verrà  generato.

Per generare gli eventi utilizzare possibilmente un metodo virtual protected in modo che, se l'evento è contenuto in una classe base, le eventuali classi derivate potranno effettuare l'override del metodo stesso e gestire quindi l'evento autonomamente.

Passare null come parametro sender nel caso di eventi statici, mentre al contrario nel caso di eventi non statici passare sempre l'oggetto che ha generato l'evento e mai null.

Come parametro EventArgs non passare mai null e nel caso in cui non vi siano dati da passare al gestore evento, utilizzare il valore nullo Empty al posto di null.

Possibilmente inserire sempre in una try-catch il codice che genera l'evento per evitare che si verifichino blocchi dell'applicazione nel caso in cui il gestore dell'evento non lo tratti correttamente.

Se possibile generare eventi che possano essere annullati nel gestore evento. Naturalmente questo è possibile solo per gli eventi che vengono generati prima dell'azione a cui sono collegati. In tal caso utilizzare CancelEventArgs al posto di EventArgs come classe base per il secondo parametro (e) del gestore evento.

Ti consigliamo anche