Guida allo stile di codifica per le app node.js? [chiuso]


130

Esiste una (o più) guida di stile di codifica per node.js? In caso contrario, quali sono gli stili emergenti utilizzati dai principali progetti di nodi open source?

Sto cercando una guida (o diverse guide) sulla falsariga di PEP 8 , la guida canonica di stile di codifica per Python. Ho visto varie guide JavaScript non degne di essere collegate qui (per lo più vecchie e mirate al JavaScript lato client). Ho trovato un interessante node.js guida di stile .

Una guida allo stile di codifica, o convenzioni di codifica, dovrebbe includere (ma non è limitato a):

  • Layout del codice: rientro (2 spazi, 4 spazi, tabulazioni, ...), newline, interruzioni di riga, ecc.
  • Spazio bianco, ad es. "Funzione (arg)" vs. "funzione (arg)"
  • Punto e virgola o nessun punto e virgola, dichiarazione var, ...
  • Denominazione, ad esempio, do_this () vs. doThis (), var_name vs. varName, ...
  • idiomi node.js e JavaScript, ad esempio == vs. ===, il primo argomento di callback è un oggetto errore, ...
  • Commenti e documentazione
  • Strumenti di accompagnamento, come controllore lanugine, framework di test unitari, ...

Questo argomento ovviamente è altamente soggettivo, ma penso che sia un passo importante di una comunità stabilire uno stile di codifica comune e ampiamente accettato nel processo di maturazione. Inoltre, non si tratta solo di gusto. In particolare, regole come "use === anziché ==" hanno un'influenza diretta sulla qualità del codice.


immagino che dipenda davvero dal "framework" che usi (se presente), ad esempio puoi dare un'occhiata a spludo.com/source/coding-standards ma altri potrebbero condividere approcci leggermente diversi
Poelinca Dorin

4
"Qualcuno ha una buona serie di guide di stile" può essere o non essere soggettivo, ma "Quali sono gli stili emergenti" lo è sicuramente. Hai già trovato la guida di Felix, che ovviamente non sono d'accordo con gli aspetti di (in alcuni casi fortemente) e sono d'accordo con altri aspetti di. E questo è il problema. Molto, molto rapidamente entra in "No, lo stile che vedo emergere utilizza le schede!" "No, lo stile che vedo emergere utilizza quattro spazi!" "No, lo stile che vedo emergere utilizza due spazi!" Quando, naturalmente, ciò che la gente intende veramente è "lo stile che preferisco", non "lo stile che vedo emergere".
TJ Crowder,

2
@TJ Croweder Lo stile che vedo emergere non usa spazi!
Raynos,

+1 Domanda fantastica. Vorrei avere questi link anni fa.
Bryan Downing,

Domanda soggettiva.
Niels Abildgaard,

Risposte:


120

Esaminerei gli standard di codifica controllati da JSLint o guarderei l'autore degli standard di codifica NPM (Isaac Shlueter) .

Potresti anche guardare lo stile usato dai notevoli programmatori Node.JS:

Io butto il mio lì dentro per buona misura;)

Modifica: suggerimenti di @alienhard

IMO ci sono alcune regole d'oro che dovresti seguire:

  • Non usare mai withoeval
  • Utilizzare ===oltre==
  • Dichiarare sempre le variabili con varnell'ambito appropriato - non ricadere nell'ambito globale
  • Avvolgi la tua app in una chiusura (function(){})()se prevedi di rilasciare il codice che viene eseguito sul lato server e nel browser
  • I callback dovrebbero prendere errcome primo argomento e se essi stessi prendono un callback come argomento, dovrebbe essere l'ultimo, ad escallback(err, param1, param2, callback)

Rientro, spaziatura tra parentesi graffe e parole chiave e posizionamento punto e virgola sono tutti una questione di preferenza.


2
Grazie per la risposta. Mi chiedevo perché non hai menzionato Ryan;). Ma ho pensato, dal wiki ufficiale del repository dei nodi, che seguono la guida di stile JavaScript di Google . Non l'ho mai detto prima ...
alienhard

15

C'è un nuovo standard in città.

Usa lo stile standard .

js-standard di stile


1
Non ho idea del perché questo abbia solo 3 voti ...
Luc

4
@Luc forse a causa della regola "Nessun punto e virgola". Sembra una scelta strana per qualcosa chiamato stile "Standard".
Daniel Yankowsky il

Nessun punto e virgola non è una buona idea. Romperà un po 'di minificazione.
denov,

A questo standardpacchetto non piacciono i punti e virgola. Se ti piacciono i punti e virgola c'è semistandard
yesnik

10

Puoi imparare molte buone pratiche di stile di codifica dalle guide JavaScript orientate al lato client (la maggior parte si applica anche a node.js in generale poiché la differenza tra lato client e lato server è principalmente nelle librerie e non nel linguaggio stesso). Ad esempio il libro JavaScript Patterns dedica a questo argomento alcune parti del capitolo 2 . Anche il sito web , il libro e i video di Douglas Crockford sono assolutamente da vedere per poter adottare stili di codifica e best practice specifici di JavaScript, direi.


3
+1 al libro di Douglas Crockford "JavaScript: le parti buone". Ha un sacco di informazioni in un breve / conciso libro - una lettura pesante, ma uno dei migliori libri che ho letto.
Alex KeySmith

7

Quando si utilizza il nodo dal terminale, è utile che il codice sorgente utilizzi gli spazi per il rientro. In caso contrario, il cursore "Errore qui" non si allinea.

Con le schede:

        var preps = files.map(function(f) { 
            ^
TypeError: Cannot call method 'map' of null

Con spazi:

        var preps = files.map(function(f) { 
                          ^
TypeError: Cannot call method 'map' of null

Questo potrebbe essere un problema solo per Mac, ma sospetto di no.


OP ha chiesto una guida di stile. Non un consiglio specifico.
mightyiam,

@mightyiam Vero, ma le regole di rientro fanno parte di quasi tutte le guide di stile. Forse il mio punto può aiutare OP a valutare alcune delle guide di stile che altri collegheranno, o può aiutarlo a sviluppare la sua guida di stile.
Daniel Yankowsky,



2

Per Coffee-Script, dove cattivi rientri significa errori di compilazione

uso

:set tabstop=2
:set shiftwidth=2
:set expandtab

popolari progetti di caffè zombie, brunchutilizza questa configurazione per i rientri.

Modificare:

In realtà, usa questo! https://github.com/paulmillr/code-style-guides (uno dei principali collaboratori di brunch)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.