Desde que tengo uso de razón, he evitado utilizar fallos en las sentencias switch. En realidad, no puedo recordar que alguna vez haya entrado en mi conciencia como una forma posible de hacer las cosas, ya que se me inculcó desde el principio que no era más que un error en la declaración de cambio. Sin embargo, hoy encontré un código que lo usa por diseño, lo que me hizo preguntarme de inmediato qué piensan todos en la comunidad sobre la falla de la declaración de cambio.
¿Es algo que un lenguaje de programación no debería permitir explícitamente (como lo hace C #, aunque proporciona una solución) o es una característica de cualquier lenguaje que sea lo suficientemente potente como para dejarlo en manos del programador?
Editar: No fui lo suficientemente específico para lo que quise decir con fallos. Yo uso mucho este tipo:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
Sin embargo, me preocupa algo como esto.
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;
}
De esta manera, siempre que el caso sea 0, 1, hará todo lo que esté en la instrucción de cambio. He visto esto por diseño y simplemente no sé si estoy de acuerdo en que las declaraciones de cambio deben usarse de esta manera. Creo que el primer ejemplo de código es muy útil y seguro. El segundo parece un poco peligroso.