Doit-on mettre des points-virgules à la fin des lignes en JavaScript ?

Le 13/04/2016

Dans Développement

Présentation des camps

Comme on peut s'y attendre avec ce style 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 utilisateurs), les raisons sont les suivantes :

  • Certaines situations mènent à des bugs sans point-virgule, donc autant en mettre partout pour simplifier.
  • Si on ne les met pas, l'outil JSlint ne va pas apprécier.
  • 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 points-virgules.

À ces remarques, nous pouvons répondre : si un outil peut briser un code valide, alors il faut changer d'outil. Un compresseur JavaScript incapable d'ajouter des points-virgules tout seul était acceptable en 2010, plus maintenant.

D'un autre côté, 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, donc autant ne pas l'utiliser et ne jamais mettre de points-virgules.
  • Si on les met, l'outil Standard JS ne fonctionnera pas correctement.

Que dit le standard ECMAScript ?

Le standard reste très vague sur ce sujet bien entendu, sinon le débat n'existerait pas. 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. 

Pour faire simple, cela signifie "quand on ne comprend pas, on met un point-virgule et on regarde si l'on comprend". Assez vague, n'est-ce pas ?

Pour une version claire et non simplifiée, avec quelques exemples, nous vous conseillons la lecture de l'article suivant : JavaScript Semicolon Insertion : Everything you need to know

Que disent les internautes ?

Les avis diffèrent selon les internautes et leur camp. Nous avons décidé de prendre deux exemples, mais vous trouverez certainement plus d'informations en explorant stack-overflow.

La plupart des personnes faisant parti du camp du "oui" promettent des punitions divines et des performances diminuées, souvent sans source.

Dans l'autre camp, c'est un peu plus nuancé. Les informations sont mieux sourcées et ont l'avantage d'être plus détaillées.

Notre avis

Les points-virgules sont optionnels, donc on choisit d'en mettre ou non !

La seule chose importante est de rester cohérent avec soi et avec le reste de l'équipe : soit on met dans toutes les situations ou bien on les met seulement quand c'est nécessaire. 

Points virgules javascript meme

Et vous qu'en pensez-vous ? Aviez-vous déjà entendu parler de ce débat (peu présent sur la scène francophone) ?  Quelle est votre position sur les points-virgules ? Donnez votre avis en commentaire !