Je suis tombe il y a peu sur un article relançant un débat que je pensais enterre. En quelques mots : doit-on mettre des points-virgules en Javascript ?

L'article en question est le suivant : Semicolons matter.  Pensez à faire un passage par la case commentaires, le débat y fait rage et est rempli de messages très intéressants.

Présentation des camps

Comme on peut s'y attendre avec ce genre de questions fermées, il y a deux camps : le camp du oui et le camp du non.

Pour les partisans du oui (la majorité des gens, je dirais), les raisons sont les suivantes :

Trouvez un webdesigner disponible

Trouvez gratuitement le prochain talent qui réalisera votre projet ou rejoindra votre équipe.

  • Certaines situations mènent a des bugs sans point-virgule, donc autant en mettre partout pour simplifier
  • Si on ne les met pas, jslint va pas être content
  • On les a toujours mis, pourquoi changer ?
  • Certains compresseurs de Javascript peuvent produire du code qui ne fonctionne plus si le Javascript n'a pas de point-virgules.

À ces remarques, je vais juste répondre à la dernière : si un outil peut briser un code valide, changez d'outil. Un compresseur Javascript pas capable d'ajouter des points-virgules tout seul, c'était acceptable en 2010, plus maintenant.

Dans l'autre coin, nous retrouvons le camp du non, avec les raisons suivantes :

  • Les points-virgules en Javascript sont en réalité des "statement separators" et pas des "statement terminators", c'est-à-dire qu'ils sont là pour séparer les commandes, pas les finir (comme en Ruby par exemple).
  • 99% des situations ne demandent pas de points-virgules et le 1% qui reste n'est pas beau, donc autant ne pas l'utiliser et ne jamais mettre de point-virgule.
  • Si on les met, standard js va pas être content.

Que dit le standard ECMAScript ?

Le standard reste très vague sur ce sujet bien entendu, sinon on n'aurait pas de débat. En quelques mots, le standard indique que les points-virgules sont implicites à chaque fois qu'un retour chariot est suivi d'un caractère inattendu. 

En gros "quand on ne comprend pas, on met un point-virgule et on regarde si on comprend". Assez vague, n'est-ce pas ?

J'ai évidemment simplifié a l'extrême. Pour une version claire et non simplifiée, avec quelques exemples et tout ce qu'il faut, je vous conseille la lecture de l'article suivant : JavaScript Semicolon Insertion : Everything you need to know

Que disent les gens ?

Ça depend des gens et de leur camp, évidemment. Je vous ai pris deux petits exemples, mais vous trouverez beaucoup plus d'arguments en tapant "javascript semi-colon" sur Google et en explorant stack-overflow.

La plupart des personnes du camp du "oui" promettent des performances à la ramasse et des punitions divines, souvent sans source (ce qui s'explique par le fait que les points-virgules sont optionnels, et que sinon le débat n'existerait pas).

Dans l'autre camp, c'est un peu plus nuancé. Les informations ont plus souvent des sources (qui les arrangent, du coup), mais on l'avantage d'être plus détaillées.

Mon avis

Les points-virgules sont optionnels, donc on fait bien comme on veut !

La seule chose importante est de rester constant avec soi et avec le reste de l'équipe : ou on en met partout, ou on en met que quand c'est strictement nécessaire. On ne peut pas en mettre juste un peu, pour voir.

Et vous qu'en pensez-vous ? Aviez-vous déjà entendu parler de ce débat (qui n'a pas trop touche le web francophone), et quel est votre position sur les points-virgules ? Donnez votre avis en commentaire !