Si bien me doy cuenta de que cada idioma tiene su propia convención para la sangría, no puedo evitar estar molesto con algo que he descubierto recientemente. Tenga en cuenta este código del manual de PHP:PHP versus JavaScript cambiar indentación
switch ($i) {
case "apple":
echo "i is apple";
break;
case "bar":
echo "i is bar";
break;
case "cake":
echo "i is cake";
break;
}
Observe que cada caso está sangrado de la instrucción de cambio. Esto tiene sentido, ya que el código es más fácil de leer y el cuerpo del bloque está contenido en un nivel dentro de él.
Sin embargo, cuando pruebo la sentencia switch JavaScript equivalente en JSLint:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
... se muestra un error que me dice que debería aparecer como esto en su lugar:
switch (i) {
case "apple":
alert("i is apple");
break;
case "bar":
alert("i is bar");
break;
case "cake":
alert("i is cake");
break;
}
Parece contraintuitivo, ya que cada caso ahora está en línea con el bloque del interruptor en sí mismo. No puedo imaginar ninguna razón por la que esto se considere mejor, mucho menos desencadenar un error.
¿JSLint está equivocado, o simplemente está siguiendo la convención? Si esto último es cierto, ¿por qué la convención no debería guiar por claridad?
JSLint en realidad se queja de este tipo de cosas? * -dies- * – BoltClock
JS y PHP no son Python, use la sangría que desee. – Shikiryu
Usaría 'if ([" manzana "," barra "," torta "]. IndexOf (i)! = -1) alerta (" i es un "+ i);';) – Gumbo