He visto ejemplos como los siguientes:
$data = array(
'username' => $user->getUsername(),
'userpass' => $user->getPassword(),
'email' => $user->getEmail(),
);
Sin embargo, en la práctica no siempre he dejado la coma al final. ¿Estoy haciendo algo mal o es sólo "otra" forma de hacerlo? Si estuviera usando un marco, ¿la coma final no afectaría negativamente a la generación de código? También he visto el uso de comas finales en declaraciones de matriz en otros lenguajes (Java, C ++), así que supongo que las razones para dejar las comas finales no son específicas de PHP, pero esto ha despertado mi interés.
php
arrays
code-generation
ashurexm
fuente
fuente
Respuestas:
Porque ellos pueden. :) La entrada del manual de PHP para la matriz estados de :
En serio, esto es completamente por conveniencia, por lo que puede agregar fácilmente otro elemento a la matriz sin tener que agregar primero la coma final a la última entrada.
Hablando de otros lenguajes: ten cuidado con esto en JavaScript. Algunos navegadores más antiguos arrojarán un error, aunque los más nuevos generalmente lo permiten.
fuente
git blame
(o equivalente en otro control de código fuente) mostrará que escribió esa línea aunque acaba de agregarle una coma. No es un gran problema de ninguna manera, pero es útil.Esta es una buena práctica al definir una matriz en varias líneas. También es alentado por los estándares de codificación de ZendFramework :
fuente
Al trabajar con el control de versiones (git), noté que si agregamos 1 cosa a una matriz y no tenemos la coma al final, parecerá que modificamos 2 líneas porque la coma tuvo que agregarse a la línea anterior. Encuentro que esto se ve mal y puede ser engañoso al mirar los cambios del archivo, y por esta razón creo que una coma al final es algo bueno.
fuente
Porque mantiene las entradas uniformes.
Si ha tenido que cambiar el orden o agregar o eliminar entradas, sabe que es muy conveniente poder dejar una coma al final.
Si el último elemento no puede tener coma, terminará teniendo que mantener la última coma modificando las entradas. Es un ejercicio inútil y una pérdida de tiempo y movimientos de los dedos porque la intención de intercambiar o modificar entradas ya se ha logrado.
Al permitir una coma al final del último elemento, libera al programador de tener que ocuparse de este molesto e infructuoso detalle.
fuente
La razón es cometer cambios.
Si tiene que agregar la coma final al agregar un nuevo elemento. Estás cambiando 1 línea y agregando 1 línea. (- ++)
Al agregar un nuevo elemento cuando ya hay una coma en la línea de arriba. Solo hay 1 línea agregada y no hay cambios. (+)
fuente
No puedo hablar por otras personas, pero normalmente dejo una coma al final de mi código. Lo hago porque si / cuando luego agrego a la matriz, no tengo que preocuparme por perder una coma debido a que me olvido de agregar una coma a lo que anteriormente era la última línea.
fuente
Siento que aunque está permitido, es una mala práctica, es como omitir el último punto y coma de tus funciones y bucles.
fuente
Siempre uso una coma al final porque ayuda a evitar errores de sintaxis al agregar nuevos elementos de matriz ... es solo una buena práctica.
fuente
$arr[] = ...
.Si observa un ejemplo de configuración de archivo roundcube (config.inc.php), tiene un ejemplo con y sin coma al final.
Esta matriz define qué complementos deben habilitarse o deshabilitarse:
... // List of active plugins (in plugins/ directory) $config['plugins'] = array( 'managesieve', 'password', 'archive', 'zipdownload', ); ...
Normalmente, esto sería línea por línea y si alguien quiere agregar algo en la matriz, puede hacer esto:
... // List of active plugins (in plugins/ directory) $config['plugins'] = array( 'managesieve', //code by personA 'password', //code by personA 'archive', //code by personA 'zipdownload', //code by personA 'newplugin', //new code by personB ); ...
Entonces, cuando envían este código, solo ven un cambio para esa línea en particular y esto es más legible cuando se inspecciona quién está haciendo los cambios de código para esa línea en particular.
En otra línea de código, puede ver esto sin coma al final:
... $config['default_folders'] = array('INBOX', 'Drafts', 'Sent', 'INBOX.spam', 'Trash'); ...
Normalmente sería una sola línea de código donde nadie espera que este código se cambie con frecuencia.
En otras palabras:
1) Coloque una coma al final si la matriz se usa como una opción o archivo de configuración que podría necesitar cambiarse dinámicamente en el futuro. Además, si realiza cambios en esa matriz mediante programación utilizando una coma final, solo realiza cambios en el código de una línea, mientras que sin ella, tiene que lidiar con 2 líneas de códigos y esto puede causar más complejidad para analizar la matriz
2) No tiene que poner una coma al final si la matriz es una matriz constante y no espera que cambie en el futuro, pero como se menciona en la Respuesta aceptada, puede poner una coma al final, pero no tiene ningún propósito
fuente
Esto me sorprendió recientemente, pero tiene sentido. Durante mucho tiempo he intentado adherirme a una convención anterior que logra lo mismo, que es poner la coma separadora al frente de cada entrada en lugar de al final.
$data = array( 'username' => $user->getUsername() , 'userpass' => $user->getPassword() , 'email' => $user->getEmail() );
Las comas también se alinean de esa manera, lo que se ve bien, pero puede hacer que la sangría sea un poco incómoda. Tal vez por esa razón, no parece haberse popularizado mucho a lo largo de los años, y otros me han preguntado por qué lo hago. Supongo que la solución de PHP es un buen compromiso y, en cualquier caso, aparentemente es la solución aceptada ahora.
fuente
Siempre agregué comas al comienzo de la nueva entrada. Los compiladores lo ven como el símbolo de un solo carácter de anticipación que dice "hay otro en camino". No sé si los compiladores modernos usan LR (1) (recursivo a la izquierda, avance de un solo token) pero creo que ahí es donde se origina el error de sintaxis cuando una coma no tiene nada después. Es raro que alguna vez otro desarrollador esté de acuerdo conmigo, ¡pero parece que John Brooking lo hace!
fuente