2012-02-29 9 views
8

En la mayoría de las bibliotecas Node.js personas toman especial cuidado quitar comas finales después del último par clave-propiedad de los objetos:¿Por qué preocuparse por las últimas comas en Node.js?

var test = { 
    key1: 123, 
    key2: 456, 
    key3: 789 
}; 

Esto produce algunas dificultades durante la edición del código, por ejemplo, para intercambiar los dos pares clave-valor uno también tiene que agregar una coma y eliminar una. Algunas personas se mueven comas a la línea siguiente, que resuelve el problema con el último elemento, pero también hace que el código un poco más difícil de leer (en mi humilde opinión):

var test = { 
     key1: 123 
    , key2: 456 
    , key3: 789 
}; 

Por otro lado en la medida que yo sepa las comas finales en JavaScript producen problemas solo en algunos navegadores IE. Entonces, me pregunto si hay razones técnicas para no escribir hash con comas finales en Node.js? (Como el siguiente :)

var test = { 
    key1: 123, 
    key2: 456, 
    key3: 789,   
}; 
+2

En este punto, el único lugar que puede importar es en lugares donde el nodo espera JSON real. Por ejemplo, en un paquete.json, no puede tener comas finales. – loganfsmyth

+1

hay comas para que cuando use coffee script esté mucho más feliz cuando las omita – mkoryak

+0

Tenga en cuenta que las comas finales NO son compatibles con la sintaxis de la función mediante Node.js cschuff

Respuesta

5

No, no hay ninguna razón técnica para hacer eso.

Sin embargo, nunca puse comas al final solo porque creo que hace un código más limpio. Probablemente algunos también tienen el hábito proveniente del desarrollo web donde, como mencionaste, debes tener cuidado con ellos debido a IE.

+0

Agregue que muestra un poco de intención en su código, que no estamos escribiendo código para compiladores, pero para otros programadores y principalmente a nosotros mismos Pon un buen ejemplo. – jcolebrand

+0

Hay una gran cantidad de razones técnicas, se llama futuro para probar que su código se ejecuta en versiones más nuevas de ES donde las comas finales son un error de sintaxis – Raynos

+1

@Raynos ¿tiene una buena fuente para eso? Estoy encontrando cosas contradictorias. [Legal] (http://www.2ality.com/2011/06/object-literal-comma.html) [Illegal] (http://whereswalden.com/2010/09/08/spidermonkey-json-change- trailing-commas-no-longer-accepted /) [Legal] (http://css.dzone.com/articles/quick-javascript-tip-trailing) –

1

En primer lugar, creo que las comillas finales son feas, así que solo las uso cuando sea necesario (las tuplas de python con solo un elemento) y las comas iniciales son incluso más feas.

Además de eso, hay una razón para nunca usarlos: no tiene que tener cuidado si el código que está escribiendo es para node.js o para el cliente que bien podría ser un IE que no le gusta. .

No hay ninguna razón técnica para omitirlos en node.js.

1

Actualización: He cambiado mi posición al respecto. Creo que las comillas finales son geniales porque no es necesario cambiar dos líneas para agregar una propiedad, y la diferencia solo muestra la línea agregada.

Antiguo y el mal:

He encontrado una gran razón para no utilizar detrás comas, pero no es específico para Node.js:

From Johan Sundström:

El beneficio de este formato es la facilidad de compatibilidad: agregar o eliminar un la propiedad o el miembro de la matriz casi nunca toca ninguna otra línea, excepto el , donde realmente ocurrió un cambio, mientras que la sintaxis de la coma final casi siempre toca dos líneas para obtener las comas correctas.

Por el contrario, las líneas modificadas nunca tendrán nada que no esté relacionado con ellas, que ayuda a escanear visualmente visualmente.

+18

¿No es eso lo que está mal? Yo diría que tener una coma al final es más compatible con diff, ya que no tiene que editar la línea anterior para agregar una nueva (al final). También hace que sea más fácil copiar y pasta :) – grahamrhay

+0

@grahamrhay si tiene que agregar una línea después de la última línea, igual tendrá que agregar una coma a menos que no esté abajo con el estándar JSON :) Desde que publiqué Esto, desde entonces, he decidido que me gusta liderar comas, porque hace que mi código sea legible para mí, los desarrolladores de Python, los desarrolladores de ruby ​​y otros en general. Para mí, ahora vale la pena el beneficio diff. – mkelley33

+0

@grahamrhay Usted hace grandes puntos. He venido a ver las cosas a tu manera. Trailing comas ftw. – mkelley33

0

Soy un gran admirador de las claves clasificadas alfa en un objeto. Hay una serie de ventajas en esto. El principal es la comparación visual de dos objetos similares.Todos los IDEs modernos que proporcionan soporte para la depuración de JavaScript (que he visto) alfa-ordenar las propiedades. Entonces, cuando comparas un objeto en un punto de interrupción con tu código, simplemente lo hace más fácil.

Tener una coma final en el último par de un objeto hace que sea fácil ordenar los pares en el objeto: seleccione todas las líneas y pulse la tecla ordenar en su editor. No se necesita añadir/eliminar más comas si el último par ya no es el último par.

Estoy de acuerdo con todos los otros comentarios que (al principio) hace que su código sea "sucio" o más feo. Descubrí que después de moverme a las comillas finales rápidamente me acostumbré y, después de varias semanas, comencé a preferir verlo de esa manera.

Como humanos nos sentimos más cómodos con lo que estamos acostumbrados. Dado que la mayoría del código que vemos no tiene una coma final, eso es lo que más nos gusta. Después de algunas semanas con comas finales, es posible que prefiera eso. Y puede que lo encuentres más práctico.

Cuestiones relacionadas