Switch je if na steroidoch. Ak to niekto pouziva ako goto, tak je to antipattern. Naduzivanie switch je zapach v kode, ale o tom som nechcel. Zaujimave, ze ste si zasa precitali, len to co sa hodilo vasemu egu. Skuste prosim prestat pisat na chvilu, bude to tak lepsie.
Ne, to není ani náhodou, protože:
1) řetězec if-else nad enumem (třeba stavy ve stavovým automatu) nehlídá, že je některý stav neošetřený. Switch aspoň hodí warning, pokud vyhodíš DEFAULT (další synonymum pto GOTO).
2) Přepiš pomocí switche bez jakýhokoliv IFu následující kód (pokud je SWITCH rozšířením IFu, neměl by to být problém):
if(a == 5) {
akce1();
} else if(b == 7) {
akce2();
} else if((c > 0x07) && (c <= 0xf3) {
akce3();
} else {
akce4();
}
3. Dovoluje pass through z jedné větve do druhé, to bez něj dáš jenom s GOTO nebo nepřehledným chaosem a opakovaným vyhodnocováním (= drahý, zahazuješ zbytečně pipeline).
Prostě IF != SWITCH a programátor ví, kdy co použít. Pokud to zaměňuješ, jsi fakt dřevo.