name estandar español codificacion code java coding-style switch-statement pascal

java - estandar - ¿Es un buen hábito usar el caso "predeterminado" en una declaración de cambio?



methods naming convention java (6)


cuando estoy usando un conmutador (en Java en este caso), normalmente uso el caso predeterminado si es necesario. Uno de mis maestros me dijo que cuando solía programar en Pascal, ese caso no existía. Dijo que si no existiera en Pascal, no debería ser algo bueno de usar.

Mis preguntas son:

  • ¿Es incorrecto usar el caso predeterminado?
  • ¿Cómo funciona internamente?

Gracias por adelantado.


Considero que es un mal hábito no usarlo.

  • Si crees que el caso predeterminado nunca sucederá, lanza una excepción para estar seguro
    • Si cambias una enumeración, puede suceder que alguien agregue otro valor
    • Si cambia un número entero, siempre es posible encontrar un valor inesperado
  • porque el caso predeterminado siempre ocurre cuando lo esperas al menos
  • Por lo que sé, hay algo similar en Pascal

Editar:

Este es Pascal, solo para demostrar que tu maestro está equivocado

case place of 1: writeln(''Champion''); 2: writeln(''First runner-up''); 3: writeln(''Second runner-up''); else writeln(''Work hard next time!''); end;


Me temo que tu maestra está equivocada. Es una buena práctica tener un caso predeterminado.


No hay nada malo con el caso predeterminado. De hecho, creo que casi siempre debería utilizarse para arrojar un error que indique un valor defectuoso en el interruptor.

Lo único que puedo pensar que podría llevarlo a usted a hacer esa declaración es su creencia de que sus datos deberían haber sido validados antes de llegar a una declaración de caso. es decir, si está programando bien, sus casos reflejarán todas las contingencias.

Bueno, si ese fuera el caso, entonces no necesitaríamos excepciones, punto. La idea de excepciones es manejar condiciones imprevistas. Si fuera razonablemente anticipable, lo manejaría.

Por lo tanto, arroje una excepción en sus declaraciones predeterminadas de cambio por todos los medios.

En cuanto a cómo funcionan internamente? Estoy seguro de que hay muchas implementaciones posibles, pero, lógicamente, el caso predeterminado es simplemente la última cláusula else en una larga cadena de if..then..if..then..else''s.


Realmente depende. Si no hay un valor predeterminado, no necesita tenerlo.


Sí, es una buena práctica usar el caso predeterminado, porque si más adelante cambia las condiciones o enumeraciones que usa en su declaración de cambio, la aplicación se comporta "menos incorrecta" de lo que sería si los nuevos valores no estuvieran cubiertos en absoluto. . Lamento decirlo, pero IMO tu profesor tiene un poco para ponerse al día con metodologías de programación más recientes.

Internamente funciona de esa manera, que la rama predeterminada se usa en el caso, la condición no coincide con ninguna de las otras condiciones enumeradas.


Usar un caso predeterminado siempre es un buen hábito. Incluso lo uso cuando enciendo una enumeración. Si la enumeración tiene 3 valores, tengo 3 declaraciones de casos y una declaración de caso que arroja un AssertionError.

Esto es bueno porque si la enumeración se amplía, se garantiza que los errores relacionados con la falta de los nuevos valores en las sentencias switch se detectarán pronto.