14 Stimmen

C#: Ist der explizite Aufruf eines Ereignis-Handlers wirklich "eine gute Sache zu tun"?

Diese Frage bezieht sich auf C#, kann aber auch auf andere Sprachen anwendbar sein. Ich habe einen Vorbehalt gegen die Verwendung von Code wie dem folgenden:

using System.Windows.Forms;

class MyForm : Form
{
    private Timer myTimer;
    private Button myButton;

    public MyForm()
    {
        // Initialize the components, etc.

        myTimer.Tick += new EventHandler( myTimer_Tick );
        myButton.Click += new EventHandler( myButton_Click );

        myTimer.Start();
    }

    private void myTimer_Tick( object sender, EventArgs eventArgs )
    {
        myTimer.Stop();
        // also, I see a lot of usage of 
        // Timer.Enabled = true/false instead of -^
        myButton_Click( this, ea /* or event EventArgs.Empty, or null */ );
        return;
    }

    private void myButton_Click( object sender, EventArgs eventArgs )
    {
        // do a lot of stuff, with lots of logic that doesn't even use the
        // state of the eventArgs
        return;
    }
}

Bin ich der Einzige, den der oben beschriebene Stil stört? Gibt es andere, die die Klarheit der Trennung der Ereignisbehandlung von der Arbeitslast der Funktionen oder sogar die Aufteilung komplexer Routinen in separate Funktionen genießen?

Gibt es überhaupt einen akzeptierten Stil? Ich fühle mich wie jede Ausdruckskraft und Flexibilität, die Ereignisbehandlung in C# hat kann mit Stilen wie diese verloren gehen. Ich denke, wenn Sie eine Methode haben, die bedeutet "eine Schaltfläche wurde geklickt", dann sollte es nur aufgerufen werden, wenn eine Schaltfläche geklickt wird.

Denjenigen, die so schreiben, würde ich sagen: Wenn Sie darauf bestehen, eine EventHandler-Methode zu haben, um Ihren Timer-Tick und Ihren Schaltflächenklick zu behandeln, dann nennen Sie sie etwas anderes als button_Click - vielleicht " handleUserEvent( object sender, EventArgs eventArgs ) ".

Die eigentliche Frage ist jedoch, ob es weit verbreitete Stilrichtlinien gibt, die eine Verwendung wie die obige entweder unterstützen oder davon abraten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X