c coding-style curly-braces switch-statement

declaración de "interrupción" cuando se usan llaves con interruptor en caja



coding-style curly-braces (5)

Utilizo llaves con todas las declaraciones de mi caja de cambios en C / Objective-C / C ++

Hasta hace unos momentos, no había considerado si incluir el break; declaración dentro de los refuerzos fue una buena o mala práctica. Sospecho que no importa, pero creo que todavía vale la pena preguntar.

switch (foo) { case 1: { // stuff break; } default: { break; } }

vs

switch (foo) { case 1: { // stuff } break; default: { // stuff } break; }


Como se dijo claramente, esto es solo una cuestión de estilo personal, pero siempre pongo la declaración de break fuera de las llaves: poner el descanso antes de la llave de cierre me parece saltar una declaración compuesta aumentando así ligeramente la sensación de código spaghetti.


Hay toneladas de diferentes estilos de codificación de cómo combinar llaves e interruptores. Usaré el que prefiero en los ejemplos. La declaración de interrupción se rompe fuera del bucle más interno o declaración de conmutación, independientemente de la ubicación. Por ejemplo, podría tener varias interrupciones para un solo caso:

switch (foo) { case 1: { if (bar) break; bar = 1; ... } break; }

Tenga en cuenta que también puede colocar los estuches en cualquier lugar, aunque eso se considera una mala práctica. La etiqueta de la caja es muy similar a una etiqueta goto. Sucedió que escribí algo como esto:

switch (foo) { case 1: bar = 1; if (0) { case 2: bar = 2; } ... break; }

pero úsalo con cuidado.


Probablemente no desee los curlies en primer lugar a menos que los necesite para el alcance léxico. El primer ejemplo me parece mejor, pero supongo que la verdadera respuesta es que es una cuestión de gusto.


Respuesta corta: no importa.


Solo da una respuesta un poco más detallada ...

La especificación oficial C99 dice lo siguiente sobre la declaración de interrupción:

Una declaración de interrupción finaliza la ejecución del conmutador de inclusión más pequeño o instrucción de iteración.

Entonces realmente no importa. En cuanto a mí, puse el descanso dentro de las llaves. Como también puedes tener descansos en otros lugares dentro de tus llaves, es más lógico tener también la ruptura final dentro de las llaves. Algo así como la declaración de devolución.