2012-02-29 8 views
8

Nella maggior parte delle librerie Node.js persone prendono particolare cura di rimuovere le virgole finali dopo l'ultima coppia di chiavi-proprietà di oggetti:Perché preoccuparsi delle virgole finali in Node.js?

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

Questo produce alcuni problemi durante la modifica del codice, ad esempio, per scambiare le ultime due coppie chiave-valore si deve anche aggiungere una virgola e rimuoverne una. Alcune persone si muovono le virgole alla riga successiva, che risolve il problema con l'ultimo elemento, ma rende anche il codice di un po 'più difficile da leggere (IMHO):

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

D'altra parte, per quanto ne so le virgole finali in JavaScript produce problemi solo in alcuni browser IE. Quindi mi chiedo se c'è qualche tecnico ragioni per non scrivere hash con le virgole finali in Node.js? (Come la seguente :)

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

A questo punto l'unico posto che può essere importante è in luoghi in cui il nodo si aspetta effettivi JSON. Ad esempio, in un package.json, non puoi avere virgole finali. Le virgole – loganfsmyth

+1

sono lì in modo che quando usi la sceneggiatura del caffè sei più felice quando le ometti. – mkoryak

+0

Tieni presente che le virgole non sono supportate nella sintassi della funzione da Node.js cschuff

risposta

5

No, non v'è alcuna ragione tecnica per farlo.

Tuttavia, non ho mai inserito i combo finali solo perché penso che sia un codice più pulito. Probabilmente alcuni hanno anche l'abitudine di venire dallo sviluppo web, dove, come hai detto tu, devi stare attento a quelli a causa di IE.

+0

Aggiungete che mostra un po 'di intenzionalità nel vostro codice, che non stiamo scrivendo codice per i compilatori, ma per altri programmatori e principalmente noi stessi Dare il buon esempio – jcolebrand

+0

C'è un sacco di motivi tecnici, si chiama futuro dimostrando che il tuo codice è in esecuzione sulle versioni più recenti di ES, dove le virgole finali sono un errore di sintassi – Raynos

+1

@Raynos hai una buona fonte per questo? Sto trovando cose contraddittorie. [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

Prima di tutto, penso che le virgole finali siano brutte, quindi le uso solo quando necessario (tuple python con un solo elemento) e le virgole iniziali sono ancora più brutte.

Oltre a ciò, c'è un motivo per non usarli mai: non devi fare attenzione se il codice che stai scrivendo è per node.js o il client che potrebbe benissimo essere un IE a cui non piacciono .

Non c'è alcun motivo tecnico per ometterli in node.js.

1

Aggiornamento: Ho cambiato la mia posizione su questo. Penso che le virgole finali siano grandi perché non devi cambiare due righe per aggiungere una proprietà e il diff mostra solo la riga aggiunta.

vecchio e sbagliato:

ho trovato un buon motivo per non utilizzare virgole, finale ma non è specifico per Node.js:

From Johan Sundström:

Il vantaggio di questo formato è diff friendlyliness: aggiunta o rimozione diLa proprietào membro dell'array non tocca quasi mai altre linee, ma quella in cui è effettivamente avvenuta una modifica, mentre la sintassi della virgola finale tocca quasi sempre due righe per ottenere le virgole corrette.

Al contrario, le linee modificate non avranno mai nulla di non correlato su di esse, che aiuta la scansione a commettere visivamente immensamente.

+18

Non è questo il modo sbagliato? Direi che avere una virgola finale è più diff friendly, poiché non è necessario modificare la riga precedente per aggiungerne una nuova (alla fine). Semplifica anche la copia e la pasta :) – grahamrhay

+0

@grahamrhay se devi aggiungere una riga dopo l'ultima riga, dovrai comunque aggiungere una virgola a meno che tu non sia giù con lo standard JSON :) Da quando ho postato questo, da allora ho deciso che mi piace interpretare meglio le virgole, perché rende il mio codice leggibile da me, sviluppatori Python, sviluppatori ruby ​​e altri in generale. Per me è solo ora il valore del diff. – mkelley33

+0

@grahamrhay Fai ottimi punti. Sono venuto a vedere le cose a modo tuo. Trailing virgola ftw. – mkelley33

0

Sono un grande fan delle chiavi alfa-ordinate in un oggetto. Ci sono una serie di vantaggi a questo. Il principale è il confronto visivo di due oggetti simili.Tutti gli IDE moderni che forniscono il supporto per il debug per JavaScript (che ho visto) alpha-ordinano le proprietà. Pertanto, quando si confronta un oggetto con un punto di interruzione con il proprio codice, è più semplice.

Avere una virgola finale sull'ultima coppia in un oggetto semplifica l'ordinamento delle coppie nell'oggetto: selezionare tutte le righe e premere la chiave di ordinamento nell'editor. Non è necessario aggiungere/rimuovere ulteriori virgole se l'ultima coppia non è più l'ultima coppia.

Sono d'accordo con tutti gli altri commenti che (in un primo momento) rendono il vostro codice "impuro" o più brutto. Ho scoperto che dopo essermi trasferito alle virgole finali mi sono abituato rapidamente e dopo un paio di settimane ho iniziato a preferire di vederlo in quel modo.

Come esseri umani siamo più a nostro agio con ciò a cui siamo abituati. Dato che la maggior parte del codice che vediamo non ha una virgola finale è quello che ci piace di più. Dopo alcune settimane con le virgole finali potresti scoprire che preferisci questo. E potresti trovarlo più pratico.

Problemi correlati