Developpez.com

Le Club des Développeurs et IT Pro

JavaScript est-il malade de la compatibilité ascendante ?

Quels en sont les avantages et inconvénients et quelles solutions ?

Le 17/08/2018, par danielhagnoul, Rédacteur
JavaScript incorpore sans cesse des nouveautés et des améliorations en assurant une compatibilité ascendante, mais il oublie quelque chose.

L'aspect positif : cela lui permet de faire tourner d'anciens codes.

L'aspect négatif : certains utilisateurs, même de nouveaux utilisateurs du langage, se complaisent à utiliser des vieilleries alors que le langage dispose d'instructions plus performantes, parfois depuis longtemps.

Certes, on fait un peu de ménage de temps en temps (voir fonctionnalités dépréciées), mais est-ce suffisant ?

En dehors des personnes obligées de travailler pour des horreurs dignes du musée, je pense aux anciens navigateurs et principalement à la série des IE, pourquoi utiliser des instructions dépassées ?

Quelques exemples :
  • "var" au lieu de "const" et "let" ;
  • "getElementBy..." au lieu des versatiles et performants "querySelector" et querySelectorAll" ;
  • "on..." au lieu du performant et versatile "addEventListener" ;
  • écrire du code ES2015 et en faire une horreur avec Babel alors que tous les navigateurs d'aujourd'hui sont parfaitement compatibles y compris pour les modules ES2015+.


Je pense que si l'on continue sur la voie actuelle on va créer des "clans" de programmeurs JS (et je n'ai pas parlé des nodistes) qui ne se comprendront plus entre eux, du genre discussions entre utilisateurs de Python branche 2 et de Python branche 3, mais en pire ! Il y a au moins un autre langage qui souffre du même mal : Java.

Je propose deux solutions :
  1. Donner un numéro de version à JS, avec un grand ménage sur les instructions qui existaient avant ES2015.
  2. Réviser le contenu de l'instruction "use strict" dans le sens ci-dessus et promouvoir largement son usage.


La deuxième solution, acte volontaire de l'utilisateur, aurait l'avantage de ne pas trop compliquer le fonctionnement du navigateur.

Qu'en pensez-vous ?

Licence Creative Commons Attribution 2.0 Belgique
  Billet blog