Per tutto il tempo che posso ricordare ho evitato di utilizzare la fall-through delle istruzioni switch. In realtà, non riesco a ricordare che sia mai entrato nella mia coscienza come un possibile modo di fare le cose poiché mi è stato perforato nella testa all'inizio che non era altro che un bug nella dichiarazione di cambio. Tuttavia, oggi mi sono imbattuto in un codice che lo utilizza in base alla progettazione, il che mi ha fatto chiedere immediatamente cosa pensano tutti nella comunità del fall-through dell'istruzione switch.
È qualcosa che un linguaggio di programmazione non dovrebbe consentire esplicitamente (come fa C #, sebbene fornisca una soluzione alternativa) o è una caratteristica di qualsiasi linguaggio che è abbastanza potente da lasciare nelle mani del programmatore?
Modifica: non ero abbastanza specifico per ciò che intendevo per fall-through. Uso molto questo tipo:
switch(m_loadAnimSubCt){
case 0:
case 1:
// Do something
break;
case 2:
case 3:
case 4:
// Do something
break;
}
Tuttavia, sono preoccupato per qualcosa di simile.
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;
}
In questo modo ogni volta che il caso è 0, 1 farà tutto nell'istruzione switch. L'ho visto in base alla progettazione e non so se sono d'accordo che le istruzioni switch dovrebbero essere usate in questo modo. Penso che il primo esempio di codice sia molto utile e sicuro. Il secondo sembra piuttosto pericoloso.