De nos jours, l'IA est vraiment de plus en plus performante pour écrire du code. Vous lui dites « aide-moi à écrire une fonction anti-rebond », et en trois secondes elle vous la sort, avec commentaires et cas de test en prime. Vous lui dites « refactorise ce composant en hooks », et elle vous le fait proprement. Parfois, vous avez même l'impression que votre vitesse de frappe ne suit pas sa vitesse de génération.
Mais il y a un truc assez intéressant — peu importe à quel point le code généré par l'IA est beau, que le code JS soit écrit par un humain, par une machine, ou par un mélange des deux, il finit toujours par passer par une étape : le formatage.
Vous pourriez penser que ce n'est pas grand-chose ? L'éditeur n'a-t-il pas un formatage intégré ? Dans VS Code, on appuie sur Shift+Alt+F, Prettier s'exécute, et c'est réglé ? Oui, pour le développement quotidien, c'est effectivement suffisant. Mais voilà le problème — quand vous récupérez un bout de code compressé comme du charabia depuis Internet, ou que vous héritez du « monticule d'excréments ancestral » laissé par un ancien collègue, ou encore que vous tirez un min.js depuis un CDN pour voir ce qu'il fait réellement, c'est là que vous découvrez que le formatage ordinaire ne suffit pas du tout.
J'ai justement rencontré ce cas récemment. Un vieux projet avait besoin d'une correction urgente de bug, mais le code source était introuvable, il ne restait qu'un fichier JS compressé sur le serveur. Que faire ? Le lire en serrant les dents. Le code ressemblait à ça : function a(b,c){return b+c}var d=function(e){return e2} — les noms de variables étaient tous abcdefg, les fonctions imbriquées comme des poupées russes, des sauts de ligne ? inexistants, tout le code tenait sur une seule ligne, vous pouviez tirer la barre de défilement vers la droite jusqu'à avoir des crampes.
C'est là que vous avez besoin d'outils spécialisés de formatage et de compression JS.
Parlons d'abord du formatage. Un bon outil de formatage ne se contente pas d'ajouter des sauts de ligne et de l'indentation, il doit pouvoir reconnaître intelligemment la structure du code. Par exemple, face à if(a){b()}else{c()}, il doit savoir comment découper en plusieurs lignes pour respecter les habitudes de lecture. Face à des expressions ternaires imbriquées, il doit juger quand il faut sauter une ligne et quand il vaut mieux garder une seule ligne pour plus de clarté. Il y a aussi les littéraux d'objet, les tableaux, les paramètres de fonction — les règles de formatage diffèrent à chaque endroit, et le moindre écart devient désagréable à regarder.
J'ai essayé pas mal d'outils en ligne, certains se contentent de sauter une ligne après chaque point-virgule de manière brutale, ce qui fait que `for(var i=0;i