miércoles, 2 de mayo de 2012

Las comas primero, un buen estilo para JavaScript

Me gusta el estilo de comas primero en JavaScript. Principalmente por estos dos motivos:
  1. Reduce la complejidad visual del código, por quedar las partes de cada sentencia más estructuradas visualmente. Por tanto, también:
  2. Ayuda a encontrar errores.
Creo que el siguiente ejemplo es bastante ilustrativo:



Aviso: Limitaciones de este estilo

Existe un pequeño problema de este estilo, y te afectará si utilizas el REPL de node.js.

El REPL de node.js lee de línea en línea. Cuando lee una nueva línea intenta  ejecutar el código de la siguiente forma:
  1. Primero intenta ejecutar el código como si fuera una expresión. 
  2. Si eso falla, intenta ejecutar el código como una sentencia.
  3. Si eso también falla, entonces asume que necesita más input.
Veamos estos dos ejemplos

Al ejecutarlos, pasa lo siguiente:
$ node
> var a = 1
undefined
> ,b = 2
... ,c = 3;
...
> var a = 1,
... b = 2,
... c = 3;
undefined
>

En el primer caso, el REPL sigue pidiendo de manera indefinida y hay que hacer un Ctrl-C para salir. El segundo caso funciona correctamente.

Lo que pasa en el primer caso es lo siguiente. Una vez que el REPL lee la primera linea, intenta ejecutarla como una expresión y falla. A continuación, intenta ejecutarla como una sentencia y funciona. Una vez que se ha usado la primera linea, se intenta ejectuar la segunda linea como una expresión y falla. La intenta ejecutar como una sentencia y también falla. Falla porque la coma al principio de la línea da un error de sintaxis. Por lo tanto, pide más entradas. El proceso se repite con la siguiente línea y pasa lo mismo. Lo seguirá intentando de forma recurrente porque no hay manera de añadir algo al final que transforme el contenido que hay desde la segunda línea en adelante en una expresión o sentencia válida.

Sin embargo,habitualmente, el estilo con coma primero no será un problema con node.js por que se usará en ficheros se leen de golpe.