Desde que me lembro, evitei usar a instrução switch fall-through. Na verdade, não consigo me lembrar de alguma vez ter entrado em minha consciência como uma forma possível de fazer as coisas, já que foi perfurado em minha cabeça logo no início que não era nada mais do que um bug na instrução switch. No entanto, hoje encontrei um código que o usa por design, o que me fez imediatamente imaginar o que todos na comunidade pensam sobre o erro de instrução switch.
É algo que uma linguagem de programação não deveria permitir explicitamente (como o C #, embora forneça uma solução alternativa) ou é um recurso de qualquer linguagem poderoso o suficiente para deixar nas mãos do programador?
Edit: Eu não fui específico o suficiente para o que quero dizer com falha. Eu uso muito esse tipo:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
No entanto, estou preocupado com algo assim.
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something, but fall through to the other cases
// after doing it.
case 2:
case 3:
case 4:
// Do something else.
break;
}
Dessa forma, sempre que o caso for 0, 1, ele fará tudo na instrução switch. Eu vi isso por design e só não sei se concordo que as instruções switch devem ser usadas dessa forma. Acho que o primeiro exemplo de código é muito útil e seguro. O segundo parece meio perigoso.