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 eventoClosed
. Non utilizzare una convenzione di denominazioneBeforeXxx
/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