java - republica - ¿Por qué la extraña sangría en las declaraciones de cambio?
objetivo de la declaracion de cambio (5)
¿Por qué falta la sangría del imho del "caso"? ¿Las palabras clave en una declaración de cambio se consideran un buen estilo?
no hay sangría de la palabra clave "case" que parece ser la opción de formato predeterminada en cada IDE:
switch (i){
case 0:
break;
case 1:
break;
}
mientras encuentro este formato más intuitivo:
switch (i){
case 0:
break;
case 1:
break;
}
¿Hay alguna lógica detrás de esto que me elude?
¿Tal vez es para mantener el mismo nivel de sangría que su equivalente lógico expresado en las declaraciones? Es decir:
switch(i){
case 0:
//do something 1
case 1:
//do something 2
}
Se vería similar a su equivalente lógico:
if(i==0){
//do something 1
}else if(i==1){
//do something 2
}
En 4 palabras: sin bloques, sin indentación .
Los casos no abren un bloque. En C o C ++ incluso puede poner declaraciones de variables (pero los inicializadores no son llamados, excepto las variables estáticas, eso es una trampa) al comienzo del bloque de conmutadores. Puedes hacer muchas cosas raras con el switch
, como el dispositivo de Duff .
Por lo tanto, como los casos son solo etiquetas, su sangría no parece tan intuitiva, y no es el estilo elegido por la mayoría de los estilos.
Hay diferentes estilos de sangría para elegir. AFAIK, ninguno se considera mejor estilo que los otros siempre y cuando uses un estilo de sangría constantemente. Para mí, las etiquetas de case
sangrado son más legibles, lo mismo ocurre con public
etiquetas private
, protected
y public
en las clases, sin embargo, mi IDE no hará la sangría a mi manera. Mi código no es tan legible como me gustaría que fuera de esta manera. Oh bien...
Las Convenciones del Código Oracle de 1999 para el Lenguaje de Programación de Java TM (sección 7.8) recomiendan un estilo de conmutación en el que los enunciados de los casos no están sangrados en relación con el enunciado de conmutación como un todo.
Esta es una elección subjetiva, pero Sun decidió que es mejor si todos se apegaran a un estilo y escogieran esto.
Los casos son lógicamente etiquetas. Mucha gente coloca las etiquetas en el mismo nivel de sangría que el bloque en el que se encuentran. En mi opinión, de esa manera es más fácil leer el texto.
Lo comparo con una línea de tiempo por la que puede desplazarse. Tiene marcadores en la línea de tiempo, no sangrados en el contenido. A continuación, puede señalar rápidamente dónde están las etiquetas / marcadores, sin alejar la vista de la línea de base.