Convenzioni di denominazione per gli eventi

Le convenzioni di denominazione per gli eventi sono definite dalle regole riportate di seguito.

  • Utilizzare le maiuscole/minuscole Pascal.
  • Non utilizzare la notazione ungherese.
  • Utilizzare un suffisso EventHandler per i nomi dei gestori eventi.
  • Specificare due parametri denominati sender ed e. Il parametro sender rappresenta l'oggetto da cui è stato generato l'evento ed è sempre di tipo object; è tuttavia possibile utilizzare un tipo più specifico. Lo stato associato all'evento è incapsulato in un'istanza della classe di eventi denominata e. Utilizzare una classe di eventi appropriata e specifica per il tipo di parametro e.
  • Assegnare un nome a una classe di argomenti di eventi con il suffisso EventArgs.
  • Provare ad assegnare un nome agli eventi utilizzando un verbo. Clicked, Painting e DroppedDown, ad esempio, rappresentano nomi di eventi corretti.
  • Utilizzare un gerundio (la forma "ing" di un verbo) per creare un nome di evento che esprime il concetto di fase precedente all'evento e un verbo passato per rappresentare la fase successiva all'evento. È necessario, ad esempio, che per un evento Close che può essere annullato esista un evento Closing e un evento Closed. Non utilizzare una convenzione di denominazione BeforeXxx/AfterXxx.
  • Non utilizzare un prefisso o un suffisso nella dichiarazione di evento nel tipo, ad esempio utilizzare Close anziché OnClose.
  • In generale, è opportuno fornire un metodo protetto denominato OnXxx ai tipi con eventi di cui è possibile eseguire l'override in una classe derivata. È necessario che tale metodo disponga di un parametro di evento e, in quanto il parametro sender è sempre l'istanza del tipo.

Nell'esempio seguente viene illustrato un gestore eventi con un nome appropriato e i relativi parametri.

Public Delegate Sub MouseEventHandler(sender As Object, e As MouseEventArgs)
[C#]
public delegate void MouseEventHandler(object sender, MouseEventArgs e);

Nell'esempio seguente viene illustrata una classe di argomenti di eventi denominata correttamente.

Public Class MouseEventArgs
   Inherits EventArgs 
   Dim x As Integer
   Dim y As Integer

   Public Sub New MouseEventArgs(x As Integer, y As Integer) 
      me.x = x
      me.y = y
   End Sub
      
   Public Property X As Integer
      Get 
         Return x
      End Get
   End Property
      
   Public Property Y As Integer
      Get 
         Return y
      End Get
   End Property
End Class
[C#]
public class MouseEventArgs : EventArgs 
{
   int x;
   int y;
   public MouseEventArgs(int x, int y) 
      { this.x = x; this.y = y; }
   public int X { get { return x; } } 
   public int Y { get { return y; } } 
}

Vedere anche

Istruzioni di progettazione per gli sviluppatori di librerie di classi | Istruzioni per l'uso degli eventi