Estoy un poco desconcertado cuando o no incluir break
después del último caso, a menudo default
.
switch (type) {
case 'product':
// Do behavior
break;
default:
// Do default behavior
break; // Is it considered to be needed?
}
break
El único propósito es, en mi opinión, evitar que el código se ejecute en el resto del switch
caso.
¿Entonces se considera más lógico tener un break
último debido a la consistencia u omitirlo debido a la break
aplicación de ningún uso funcional? Ambos son lógicos de diferentes maneras en mi opinión.
Esto podría compararse hasta cierto punto con terminar un .php
archivo con ?>
. Nunca termino ?>
principalmente debido al riesgo de generar espacios en blanco, pero uno podría argumentar que sería lógico terminar con el archivo.
fuente
break
último caso también :)break
(u otra declaración de flujo de control que sale decase
) es técnicamente necesaria después de la última alternativa.switch
falla en los idiomas existentes y querían evitarlos. Las reglas que C # impone coinciden bastante con las recomendaciones de mi respuesta.break
como un NO-OP en lugar de generar unjmp
a la siguiente instrucción, ¿correcto?Dada la ambigüedad que existe en torno al uso de
switch-case
en la mayoría de los idiomas, al usarlo, sugeriría siempre usar unabreak
declaración, excepto cuando es explícitamente y por diseño no deseado .En parte, esto se debe a que cada
case
llamada se ve igual, lo que en mi opinión mejoraría la legibilidad. Pero también significa que si alguien (incluso usted) elige insertar uncase
después del último en una etapa posterior, no necesita preocuparse por verificar el bloqueo anterior, lo que podría ayudar a reducir errores al agregar nuevo código.fuente
case foo: case bar: ...
) pongo un comentario explícito en el sentido de que quiero que ocurra el fracaso. Lo hace mucho más claro.// no break
en lugar debreak;
[[fallthrough]]
atributo en el caso de C ++.No es
break
necesario después del último caso. Uso la palabra " último " (no predeterminado ) porque no es necesario el caso predeterminado es el último caso.Y sabemos que a
break
es necesario entre doscase
s consecutivos . A veces, usoif(a!=0)
mi código para mayor legibilidad cuando otros refieren mi código. Puedo elegir usarif(a)
, eso sería una cuestión de mi elecciónfuente
case
al finalswitch
sin verificar quebreak
existió (sería culpa del programador, pero aún mejor estar seguro, si por alguna razón, porque podrías ser ese programador en 6 meses-),
al final de las matrices en caso de que se inserte un nuevo valor. Sin embargo, eso rompe algunos códigos y generalmente se ve feo :),
. En caso,default
fue diseñado para ser el último caso. Tal vez el lenguaje consideraría unbreak
después como un error. Suponiendo quebreak
se permitiera como diferenciador SOLO entre dos casos.