38 votos

¿Por qué la muesca extraña en las declaraciones del interruptor?

¿Por qué la muesca en mi humilde opinión que falta de la "caja" - palabras clave en una instrucción switch se considera buen estilo?

no hay marcas en la palabra «caso» parece ser el formato opción sobre cada IDE predeterminado:

switch (i){
case 0:
    break;
case 1:
    break;
}

mientras que encuentran este formato más intuitivo:

switch (i){
    case 0:
        break;
    case 1:
        break;
}

¿Hay alguna lógica detrás de esto, que se me escapa?

32voto

Johannes Schaub - litb Puntos 256113

Los casos son lógicamente las etiquetas. Muchas personas ponen etiquetas en el mismo nivel de indentación como el bloque de están en. En mi opinión, esa manera es más fácil leer el texto.

Compararlo con una línea de tiempo de que puede desplazarse a través. Tener marcadores en la línea de tiempo, no con sangría en el contenido. Usted puede entonces rápidamente señalar donde están los marcadores de etiquetas, sin mover su ojo lejos de la línea de base.

16voto

kriss Puntos 10450

En 4 palabras: no hay bloques, no hay sangrado.

Los casos no son la apertura de un bloque. En C o C++ usted puede incluso poner las variables de las declaraciones (pero los inicializadores no se llama, excepto para las variables estáticas, que es un escollo a) al comienzo del bloque switch. Usted puede hacer muchas cosas raras con switch, como Duff del dispositivo.

Por lo tanto, como los casos son sólo etiquetas, la sangría de ellos no parece que intuitiva, y no la sangría es el estilo elegido por la mayoría de los estilos.

4voto

mingos Puntos 11608

Hay sangría diferentes estilos para elegir. Que yo sepa, ninguno se considera estilo mejor que los otros, como constantemente utiliza un estilo de sangría en todos. Para mí, sangría case etiquetas es más fácil de leer, lo mismo va para private , protected y public las etiquetas en las clases, sin embargo, mi IDE no mella mi camino. Mi código no es tan legible como quisiera que sea así. Oh bueno...

3voto

kotlinski Puntos 12815

La Convención de código de Sun Java (sección 7.8) recomienda un estilo de interruptor donde caso declaraciones no son sangradas en relación con la sentencia switch como un todo.

Esta es una elección subjetiva, pero el sol decidió es mejor si todos se adhieren a un estilo y escogió esto.

1voto

rodion Puntos 6275

¿Tal vez sea para mantener el mismo nivel de sangría como su equivalente lógico expresado en if declaraciones? Es decir:

switch(i){
case 0:
  //do something 1
case 1:
  //do something 2
}

Tendría un aspecto similar a su equivalente en lógica:

if(i==0){
  //do something 1
}else if(i==1){
  //do something 2
}

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by: