Bademeister: Toter Button

Beitrag lesen

Es sollte im Threadverlauf klargeworden sein, dass mir bewusst ist, das JavaScript es hergibt, statt jeder if-else-if-else-Konstruktion switch einzusetzen. Aber warum sollte man das tun?

Jede? Keine Ahnung, warum man das tun sollte. Davon hat ja keiner gesprochen.
Mir leuchtet nur nicht ein, warum Du die Möglichkeiten, die das switch-Statement per Design liefert, grundsätzlich ablehnst.

Anwendungsbeispiel (in PHP, da ist es wohl sinnvoller aufgehoben).

Es stehen verschiedene gesetzte Flags als Bits in einer Variable $flag.

  
define ("ERSTES_FLAG",  1); // 0001  
define ("ZWEITES_FLAG", 2); // 0010  
define ("DRITTES_FLAG", 4); // 0100  
define ("VIERTES_FLAG", 8); // 1000  
  
$flag = ERSTES_FLAG | DRITTES FLAG; // so als Beispiel  

Und nun soll abhängig vom höchsten gesetzten Flag ein Anweisungsblock ausgeführt werden. Man kann jetzt:

1.: erst das höchste gesetzte Flag separat ermitteln und dann ein switch-Statement schreiben.
2.: eine if-else-Wurst schreiben
3.: folgendes machen:

  
switch (true) {  
	case $flag & VIERTES_FLAG:  
		echo "Viertes";  
		break;  
	case $flag & DRITTES_FLAG:  
		echo "Drittes";  
		break;	  
	case $flag & ZWEITES_FLAG:  
		echo "Zweites";  
		break;	  
	case $flag & ERSTES_FLAG:  
		echo "Erstes";  
		break;	  
}  

Ich persönlich finde letztere Variante am besten, weil am kürzesten und daher (sofern vernünftig kommentiert) am übersichtlichsten und lesefreundlichsten.

Das mag so mancher anders sehen. Aber es ist doch nicht "semantsch [...] völlig unlogisch". Es ist eine ganz normale Anwendung dessen, wofür die switch-Struktur da ist: Ausdrücke vergleichen.

Viele Grüße,
der Bademeister