Tout d’abord, CoffeeScript est un projet open source qui introduit une nouvelle syntaxe au langage JavaScript et qui apporte son lot de concepts nouveaux. L’autre mérite de ce projet est décrit dans ce qui suit : « La règle d’or de CoffeeScript se résume à : C’est juste du JavaScript. Cela veut dire qu’il y a équivalent strict à chaque ligne de CoffeeScript. Par conséquent, il n’y a pas autant de problèmes d’interopérabilité du JavaScript qu’avec d’autres comme Dart ».
Forts de ces arguments, Jeff Walker a décidé d’utiliser cette variante de JS dans un nouveau projet, néanmoins il semble que l’expérience n’a pas été concluante : « Cette expérience m’a amené à ne pas utiliser CoffeeScript sur mon projet actuel ». Pourquoi donc ? Le blogueur s’explique sur la base de quelques points essentiels :
- Un code ambigu :
Sous CoffeeScript, les parenthèses, les accolades et les virgules sont optionnels, remplacés par des espaces blancs et de l’indentation, toutefois cela amène à certaines situations ambigus, en voici un exemple :
- Le code suivant ne peut être compilé :
func 5, {
event: (e) ->
if e.something
36
else45,
- A + B revient à additionner A et B, alors que A +B est équivalent à un appel de A avec comme argument +B
- Lisibilité du code :
Sous CoffeeScript, tout est expression logique (une valeur de retour existe), or selon notre blogueur : « Le cerveau humain comprend facilement la logique sous forme de symboles ». Ainsi évalué l’exemple ci-dessous reste complexe (tiré du tutoriel officiel sur les boucles):
foods = ['broccoli', 'spinach', 'chocolate']
eat food for food in foods when food isnt 'chocolate'
- En premier lieu la déclaration de foods qui est effectuée au milieu de cette expression n’apparait pas clairement comme une déclaration de variable.
- De plus il n’est pas clair quelle est la valeur retournée à eat.
- Enfin l’existence d’une condition n’est révélée qu’en dernier lieu.
- L’illusion de l’existence des classes :
Malgré les demandes des développeurs, la notion de classe n’a pas vu le jour sous JavaScript. Sous CoffeeScript le pas a été franchi, mais les classes ne sont qu’une simple émulation du concept, (cela est dû à la règle d’or de CoffeeScript). Cette situation mène à une plus grande confusion pour certains concepts de JS, en particulier le mot clé This qui n’a pas la même signification que sous les langages OO.
Pour finir, il est important de noter que « CoffeeScript a commencé à partir d’une position forte et une bonne approche philosophique vis-à-vis du champ miné qu’est Javascript ». De plus le blogueur signale qu’au quotidien cela diffère : « En réalité, les questions que j'ai soulevées en ce qui concerne CoffeeScript ne se rencontrent pas tous les jours », même si « En fin de compte, elles sont suffisantes pour dire que nous avons besoin de quelque chose de mieux ».
Source : Blog de Jeff Walker
Et vous ?
Qu’en pensez-vous ?
Utilisez-vous CoffeeScript ou bien une autre variante de JS ? Avez-vous rencontrés ces mêmes difficultés ?