Dollar Sign Blues: Javascript and PHP

Non c’è nulla di sbagliato nell’usare $ nelle variabili. Non lo farei apposta su ogni variabile, ma è ancora una sintassi valida. jQuery è uno degli esempi in cui $ viene utilizzato come nome di variabile. Questo è anche il motivo per cui “Gli strumenti di sviluppo di Chrome non sempre vedono che questo è un errore Javascript”, perché non vi è alcun errore in primo luogo.

Se hai paura di scrivere codice come:

var demo = function demo() { var a = 123; ... $a = 456; // A new variable is created in global scope.}

quindi devi usare un correttore di stile, come jsLint, jsHint o Google Closure Linter. Quale di quelle? Sta a te fare una scelta. Per aiutarti in questo, ecco alcune note:

Style

Google Closure Linter segue Google JavaScript Style Guide, noto per essere fatto abilmente. Utilizzare uno stile ben noto per JavaScript o una qualsiasi delle altre sei lingue è una buona idea: quando condividi il tuo codice o assumi un nuovo sviluppatore, è probabile che abbiano già familiarità con questo stile.

Molti sviluppatori hanno familiarità con lo stile Douglas Crockford pure. Questo stile è spiegato in dettaglio in JavaScript: The Good Parts, un libro che vale la pena di essere acquistato da chiunque lavori con JavaScript.

Per quanto riguarda jsHint, non riesco davvero a trovare quali convenzioni vengono utilizzate, e il sito stesso sembra evitare di parlare di quell’argomento. Forse mi sono perso qualcosa.

Supporto da IDE

Sia jsLint che jsHint sono supportati da PhpStorm. Questo è anche il caso di Google Chiusura Linter.

Ambiente

Google Chiusura Linter è uno di una serie di strumenti. Se stai già utilizzando Google Closure Compiler o Google Closure Library, sarebbe preferibile scegliere Closure Linter sopra altri strumenti.

Rigore

jsLint è noto per essere rigoroso. jsHint è più permissivo, il che non è sempre una buona cosa. Ad esempio, uno dei motivi per fork jsLint per jsHint è spiegato in un articolo che mostra un codice errato che produrrà un errore in jsLint, ma non in jsHint:

/*global jQuery */// Example taken from jQuery 1.4.2 sourcejQuery.extend({ /* ... */ isEmptyObject: function( obj ) { for ( var name in obj ) { return false; } return true; } /* ... */});

Il codice è cattivo, perché sembra che JavaScript abbia un ambito di blocco, mentre non lo è. Vedi JavaScript: The Good Parts, p. 102, Appendice A: Parti orribili, Mirino. In altre parole, guardando il codice senza conoscere la lingua, ci aspettiamo che name non sia visibile al di fuori del ciclo, mentre rimarrà visibile.

Per quanto riguarda Google Closure Linter, credo che sia da qualche parte nel mezzo tra jsLint e jsHint, ma non ho abbastanza informazioni per supportarlo.

Conclusione

Eviterei jsHint: è troppo permissivo, il che significa che non troverebbe potenziali bug rilevati dagli altri linter. La guida di stile che viene utilizzato è difficile da trovare.

Tra jsLint e Google Closure Linter, la scelta non è ovvia. Entrambi sono scritti da esperti, entrambi seguono una guida di stile rigorosa e ben descritta già seguita da migliaia di sviluppatori. Utilizzare entrambi per qualche tempo, quindi scegliere uno che è più pratico per voi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.