Dollar Sign Blues: Javascript et PHP

Il n’y a rien de mal à utiliser $ dans les variables. Je ne le ferais pas exprès sur chaque variable, mais c’est toujours une syntaxe valide. jQuery est l’un des exemples où $ est utilisé comme nom de variable. C’est aussi pourquoi « Les outils de développement Chrome ne voient pas toujours qu’il s’agit d’une erreur Javascript », car il n’y a pas d’erreur en premier lieu.

Si vous avez peur d’écrire du code comme:

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

ensuite, vous devez utiliser un vérificateur de style, comme jsLint, jsHint ou Google Closure Linter. Lequel de ceux-là? C’est à vous de faire un choix. Pour vous aider à cela, voici quelques notes:

Style

Google Closure Linter suit le Guide de style Google JavaScript, connu pour être intelligemment fait. Utiliser un style bien connu pour JavaScript ou l’un des six autres langages est une bonne idée: lorsque vous partagez votre code ou embauchez un nouveau développeur, il est probable qu’il soit déjà familier avec ce style.

De nombreux développeurs connaissent également le style Douglas Crockford. Ce style est expliqué en détail dans JavaScript: Les bonnes parties, un livre qui vaut la peine d’être acheté par quiconque travaille avec JavaScript.

Quant à jsHint, je ne trouve pas vraiment quelles conventions sont utilisées, et le site lui-même semble éviter de parler de ce sujet. J’ai peut-être raté quelque chose.

Prise en charge par lesEs

jsLint et jsHint sont pris en charge par PhpStorm. C’est également le cas de Google Closure Linter.

Environnement

Google Closure Linter fait partie d’une série d’outils. Si vous utilisez déjà le compilateur de fermeture Google ou la bibliothèque de fermeture Google, il serait préférable de choisir Closure Linter au-dessus des autres outils.

Rigueur

jsLint est connu pour être strict. jsHint est plus permissif, ce qui n’est pas toujours une bonne chose. Par exemple, l’une des raisons de forker jsLint pour jsHint est expliquée dans un article qui montre un mauvais code qui produira une erreur dans jsLint, mais pas dans jsHint:

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

Le code est mauvais, car il semble que JavaScript ait une portée de bloc, alors qu’il n’en a pas. Voir JavaScript: Les bonnes parties, p. 102, Annexe A: Parties Horribles, Portée. En d’autres termes, en regardant le code sans connaître la langue, nous nous attendons à ce que name ne soit pas visible en dehors de la boucle, alors qu’il restera visible.

En ce qui concerne le Linter de fermeture de Google, je crois que c’est quelque part au milieu entre jsLint et jsHint, mais je n’ai pas assez d’informations pour le soutenir.

Conclusion

J’éviterais jsHint: c’est trop permissif, ce qui signifie qu’il ne trouverait pas de bogues potentiels que les autres linters détecteraient. Le guide de style utilisé est difficile à trouver.

Parmi jsLint et Google Closure Linter, le choix n’est pas évident. Les deux sont écrits par des experts, les deux suivent un guide de style strict et bien décrit déjà suivi par des milliers de développeurs. Utilisez les deux pendant un certain temps, puis choisissez celui qui vous convient le mieux.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.