Por que mudar / caso e não se / senão se?
Esta questão está principalmente voltada para C / C ++, mas eu acho que outras linguagens são relevantes também.
Não consigo entender por que o switch / case ainda está sendo usado em vez de if / else if. Parece-me muito com o uso de goto, e resulta no mesmo tipo de código confuso, enquanto os mesmos resultados poderiam ser alcançados com if / else se de uma maneira muito mais organizada.
Ainda assim, vejo esses bloqueios com bastante frequência. Um lugar comum para encontrá-los é perto de um loop de mensagem (WndProc ...), enquanto estes estão entre os lugares quando eles levantam o maior estrago: variáveis são compartilhadas ao longo de todo o bloco, mesmo quando não são proprias (e não podem ser inicializado dentro dele). Atenção extra deve ser colocada em não deixar de quebrar, e assim por diante ...
Pessoalmente, eu evito usá-los, e me pergunto se estou perdendo alguma coisa?
Eles são mais eficientes do que se fossem? Eles são realizados pela tradição?