language-agnostic switch-statement indentation

language agnostic - ¿Cuál es la forma preferida de sangrar casos en un interruptor?



language-agnostic switch-statement (7)

De acuerdo con las Convenciones de código de Java "oficiales" , es la primera variante (sin sangría adicional para el caso).

Mientras escribía otro cambio en Eclipse, una vez más encontré una sangría predeterminada bastante extraña (para mí, al menos), que se aplica a las declaraciones de "cambio"

switch (i) { case 1: ... case n: ... }

Tiendo a preferir otra manera:

switch (i) { case 1: ... case n: ... }

¿De qué manera es más legible y agradable a la vista para ti? Todavía no estoy determinado al cien por cien de lo que es mejor para mí, así que me gustaría seguir con lo que es mejor para otras personas que leerían mi código.

Por cierto, eres libre de cerrar esta pregunta si esto es demasiado subjetivo. :)


El primer método tiene un sentido lógico (para mí), sin embargo, también prefiero el segundo método. Creo que la mayoría de nosotros estamos condicionados a esperar que el código entre llaves esté sangrado.


El primero es la sangría estándar de la caja del interruptor.

switch (i) { case 1: .... // Here you can write more code in a row than using the second way break; case n: .... break; default: .... break; }

Observe la nueva línea insertada entre el interruptor (i) y el caso 1:


Si prefiere el segundo caso, entonces, por coherencia, también debe sangrar la else parte de una declaración if :

if( test ) do_something( ); else do_something_else( );

La mayoría de la gente no hace esto, y la convención es mantener las ramas en el mismo nivel que la declaración, por lo tanto, Java prefiere la primera, ya que la prueba de la declaración del caso y las ramas del código son consistentes en el nivel que una construcción if / then / else.

También he cambiado entre ellos, pero finalmente he terminado prefiriendo el primero:

switch (i) { case 1: ... case n: ... }


Tiendo a sangrar todos los cuerpos de la estructura de control en una sola pestaña (espacio 4) así:

switch (i) { case 1: ... case n: ... }

Considero que el interruptor es la estructura de control exterior y las directivas de caja parte del cuerpo (aunque sean parte de la estructura de control).

A continuación, me gustaría más sangría pestaña en cada caso como tal:

switch (i) { case 1: do_something(); case n: do_something_else(); }

Me parece que este es el formato más legible para la construcción de casos de cambio.

Como jkohlhepp ha mencionado que la conformidad con las convenciones de estilo de código del proyecto en el que está trabajando es lo más importante, si está trabajando en un proyecto que no tiene ninguno, vale la pena desarrollarlo.


Yo prefiero la segunda forma también. Pero es más importante mantener la coherencia dentro de una aplicación en particular y / o dentro de un equipo en particular de lo que es sangrar de una manera u otra.


Yo uso la segunda manera:

switch (i) { case 1: ... case n: ... }