Se siete alla ricerca di uno stile di programmazione coerente in JavaScript senza ammattire troppo, StandardJS fa al caso vostro. Si tratta di un tool in ambiente Node.js per la definizione ed il controllo di uno standard di codifica in JavaScript. Può sostituire egregiamente le guide di stile più blasonate come quella di Google o di Airbnb che obiettivamente richiedono un certo impegno solo per leggerle. Può rimpiazzare i linter e i formatter che state utilizzando ora o che avete intenzione di utilizzare e che richiedono un po’ di tempo per imparare a conoscerli ed a configurarli. StandardJS vi rende operativi in una manciata di minuti. Vediamo insieme come.
Alla ricerca di uno stile comune
Avete presente le lunghe (e noiose) discussioni sull’uso degli spazi rispetto ai tab per l’indentazione? O se i punti e virgola vanno messi o meno alla fine di ogni istruzione? O se sia meglio usare il camelCase o lo snake_case? Bene. Spesso queste discussioni si trasformano in prese di posizione non basate su fondamenti razionali e non portano alcun beneficio al progetto a cui si sta lavorando.
Tuttavia, avere uno stile di codifica condiviso in un team di sviluppo, e ancor meglio, a livello aziendale, ha i suoi vantaggi. Per evidenziarne qualcuno, ricordiamo che esso:
- migliora la leggibilità del codice grazie all’uniformità delle convenzioni adottate
- semplifica la sua manutenzione
- può aiutare a prevenire bug
Meglio ancora se il controllo dello stile di codifica è automatico.
Come si è detto prima, StandardJS definisce e controlla lo standard di codifica per progetti basati su JavaScript. Quindi non si tratta di un semplice tool di verifica. Esso definisce già uno stile di codifica standard da utilizzare. Quindi, niente riunioni per decidere qual è lo stile “giusto” e per allineare il team. Nessuna necessità di scrivere le linee guida comuni. Nessun bisogno di configurare uno o più tool per forzare al rispetto dello stile concordato. Devi solo concentrarti sul codice da scrivere. Allo stile ci pensa StandardJS.
Installazione e uso
Usare StandardJS in un progetto basato su Node.js è piuttosto semplice. Puoi installarlo globalmente sulla tua macchina lanciando il seguente comando:
npm install standard --global
In questo caso potrai lanciare il tool dalla cartella di un progetto Node semplicemente lanciando il seguente comando:
standard
In alternativa, puoi installare StandardJS localmente al progetto con questo comando:
npm install standard --save-dev
In tal caso, lo lancerai in questo modo:
npx standard
Indipendentemente dalla modalità di installazione scelta, il risultato sarà sempre lo stesso. StandardJS analizzerà tutti i file con estensione js e jsx nella cartella corrente e in tutte le sue sottocartelle.
Se vuoi limitare l’analisi a specifiche cartelle, puoi passarle come parametri usando la sintassi glob pattern, come mostrato nel seguente esempio:
standard "src/**/*.js" "test/**/*.js"
Un tipico esempio di risultato di questa analisi è quello mostrato di seguito:
/myproject/api-server.js:1:9: Strings must use singlequote.
/myproject/api-server.js:1:27: Extra semicolon.
/myproject/api-server.js:3:25: Strings must use singlequote.
Come puoi vedere, per ogni file analizzato vengono indicati posizione (riga:colonna) ed anomalia riscontrata. I controlli effettuati sul codice JavaScript vanno dalla verifica che vengano usati i singoli apici come delimitatori di stringhe, all’uso di due spazi per l’indentazione, alla segnalazione di variabili non usate, all’uso del camelCase per i nomi, ecc. L’insieme delle regole applicate da StandardJS è consultabile sul sito ufficiale.
Una volta identificate le anomalie, puoi uniformare il tuo codice allo stile di StandardJS manualmente. Ma se lo preferisci, puoi chiedere allo stesso tool di modificare automaticamente il tuo codice. Infatti, lanciando il seguente comando, StandardJS tenterà di applicare le sue regole di stile al tuo codice:
standard --fix
La maggior parte delle anomalie riscontrate verranno corrette automaticamente, ma ci sono anomalie che richiedono in ogni caso il tuo intervento manuale. Ad esempio, se viene riscontrata la mancata gestione di un errore, StandardJS segnalerà l’anomalia chiedendo un tuo intervento manuale.
Regole ed eccezioni
Abbiamo accennato alle regole che StandardJS applica per rendere il tuo codice stilisticamente uniforme. Ma cosa possiamo fare se una particolare regola non ci soddisfa?
Ad esempio, StandardJS usa gli spazi per l’indentazione, ma se siamo dei fan dei tab, possiamo adattare la regola predefinita? La risposta è abbastanza semplice: non si può!
La cosa può sembrare brutale, ma la filosofia di StandardJS è proprio di evitare discussioni inutili e consentire ad un team di sviluppo di concentrarsi sulla scrittura del codice più che sullo specifico stile da adottare.
L’unica cosa che ci è consentito di fare è disabilitare le regole che non ci stanno bene. Dal momento che StandardJS si basa su ESLint, possiamo adottare lo stesso meccanismo basato sui commenti per disabilitare tutte o specifiche regole su una o più righe di codice. Ad esempio, il seguente blocco di codice non verrà analizzato per la coerenza di stile:
/* eslint-disable */
if (count > 0) {
console.log('Conteggio positivo');
} else {
console.log('Conteggio negativo o nullo');
}
/* eslint-enable */
Per disabilitare una specifica regola, dobbiamo indicare anche il nome della regola, come nel seguente esempio:
/* eslint-disable semi */
if (count > 0) {
console.log('Conteggio positivo');
} else {
console.log('Conteggio negativo o nullo');
}
/* eslint-enable semi */
In questo caso stiamo chiedendo a StandardJS di escludere la regola che prevede l’assenza del punto e virgola a fine istruzione (semi).
Se abbiamo bisogno di maggiore flessibilità, dobbiamo ripiegare su strumenti alternativi. Ad esempio, se in linea di massima ci piace lo stile di codifica proposto da StandardJS, ma non siamo d’accordo sull’eliminazione del punto e virgola a fine istruzione, possiamo utilizzare una variante di StandardJS: semistandard. Questo non è altro che lo stesso pacchetto StandardJS con la regola sul punto e virgola invertita.
Se vuoi essere libero di personalizzare le regole di StandardJS, allora puoi usare standardx. Questo pacchetto non è altro che StandardJS con la possibilità di poter specificare via .eslintrc o via package.json le configurazioni previste da ESLint. Naturalmente usare standardx con diverse configurazioni ad hoc sminuisce il valore di StandardJS. In quel caso potrebbe essere meglio utilizzare direttamente ESLint.
Integrazione con gli editor
Finora abbiamo presentato StandardJS come uno strumento da lanciare in riga di comando. Come tale, puoi configurare il tuo progetto Node in modo da lanciarlo automaticamente quando esegui i test. Ad esempio, puoi modificare il file package.json in questo modo:
{
"name": "my-project",
"version": "1.0.0",
"description": "Sample project",
"main": "index.js",
"scripts": {
"test": "standard && mocha"
},
...
}
In questo esempio, StandardJS verrà eseguito ogni volta che lancerai il comando npm test per lanciare mocha.
Tuttavia, puoi integrare StandardJS nel tuo editor preferito grazie alla disponibilità di diversi plugin. Puoi, ad esempio, integrarlo con Visual Studio Code tramite vscode-standardjs, o in Sublime Text tramite StandardFormat, o ancora in Atom con standard-formatter. Consulta l’apposita sezione della documentazione ufficiale per una lista aggiornata dei plugin disponibili.
Indipendentemente dalla modalità scelta per usare StandardJS, avrai di sicuro un pensiero in meno nella scrittura del tuo codice JavaScript.