hotti: input oder button für submit-Elemente?

Beitrag lesen

servus hotti,

Was machst Du, wenn es zu einem Parameter mehrere Werte gibt?

Ich benutze einen Switch.

Ok. Jetzt bringen wir mal Licht in das Dunkel. Mit einem Switch filterst Du die Werte, das sind i.d.R. Benutzereingaben. Eine Kontrollstruktur hingegen übernimmt die Kontrolle über die Parameter (Schlüssel), die der Entwickler festlegt. Ein Parameter-Kontrollstruktur dient in erster Linie nicht der Kontrolle der Benutzereingaben sondern dazu, die verschiedenen Zustände einer Anwendung auf Parameter abzubilden.

Zum Beispiel kennt ein Forum 2 Zustände:

  1. Übersicht zeigen, keine Parameter
  2. einen Thread zeigen, Parametername show, Wert ist die mesg-ID
    Es gibt einen Zustand-Übergang: Das Senden einer Nachricht, entweder als Erföffnung für einen neuen Thread oder als Antwort auf eine bereits vorhandende Nachricht. Ein einziger Parameter genügt, diesen Übergang auszulösen, wohlgemerkt: Der Parameter, nicht dessen Wert.

Nach dem Zustandsübergang ergibt sich wieder einer der beiden Zustände (1) oder (2), je nachdem, wie der Programmierer das vorgesehen hat, wird nach dem Senden entweder die Übersicht gezeigt oder der betreffende Thread.

Das ist das Grundgerüst: Die Abbildung der Zustände einer Anwendung über Parameter bzw. deren Namen. Hierzu ist eine Kontrollstruktur das Mittel zum Zweck, ein Switch ist dafür völlig ungeeignet.

Nun kommen die Werte ins Spiel, die müssen natürlich auch kontrolliert werden. Bspw. ob eine eingegebene mesg-ID valide ist (ein Benutzer kann den URL manipulieren), oder ob der Benutzer alle Pflichtfelder ausgefüllt hat. Wir müssen im Fall einer fehlerhaften Eingabe nicht das ganze Zustands-Modell über den Haufen werfen, es genügt die Ausgabe einer Fehlermeldung in einem der beiden Zustände (1) oder (2). Das sind sozusagen die stabilen Zustände: Tritt beim Zustandsübergang (Senden einer Nachricht) ein Fehler auf, fällt die Anwendung zurück in einen der beiden Zustände, d.h., sie ist und bleibt stabil.

Letzeres kannst Du nur mit einer Kontrollstruktur (if, elsif, else) sicherstellen. Natürlich kannst Du einen Switch über die Benutzereingaben legen, das bietet sich an, wenn die Eingaben vorbelegte Werte haben, z.B. Radiobuttons, Selectfelder oder Checkboxen.

Und nochwas: Einem Benutzer darf es nicht möglich sein, das Zustandsmodell zu ändern bzw. einen instabilen Zustand der Anwendung zu erzeugen. Auch dann nicht, wenn er zusätzliche oder unbekannte Parameter ins Spiel bringt. Derartige Manipulationsversuche landen unweigerlich im else-Zweig.

Schöne Grüße.