Les Yoda conditions ou if (’42’ == compteur) {

Il y a des trucs que je n’aime pas voir dans du code et qui me hérissent le poil.

Les « yoda conditions » en font partie. L’idée est d’exprimer les conditions dans le code en mettant le partie constante en premier et non plus derrière l’égalité. Ainsi on écrit plus

compteur == 42

mais comme dirait maître Yoda

42 == compteur

Alors pourquoi faire cela ? Les chantres de cette méthode avancent un argument majeur en faveur de cette notation : « cela évite que si on oublie le deuxième égal cela ne se transforme en affectation ».

en effet

if ( count = 42)

est valide alors que

if ( 42 = count )

ne l’est pas.

Effectivement, c’est le cas dans pas mal de language. Et j’ajouterais malheureusement.

Alors pourquoi je trouve cela stupide :

Premièrement ce genre d’erreur sont des erreurs de débutant et normalement un développeur expérimenté ne fait pas cela.  Bien sûr nul n’est à l’abrit d’une erreur.

Deuxièmement je trouve que le compilateur ou interpréteur devrait interpréter « if ( count = 42 ) » comme une erreur. Franchement, affecter une variable dans un if avec une valeur constante c’est vraiment tordu et ne devrait pas être permis. Au passage gcc permet de détecter ce genre d’erreur. Et si c’est le cas, l’écriture inverse n’a aucun sens.

Et enfin pour finir l’argument principal est que ça complique la lecture du code. Et tout ce qui complique la lecture, par principe, je suis contre. Un développeur passe 90% de son temps à lire du code et 10% à en écrire. Donc pourquoi lui compliquer la vie en parlant comme Yoda ?

Les puristes diront que c’est mieux parce que ça fait « maîtrise ». Je suis un master parce que je sais écrire du code complexe. Et là on rentre dans l’égo du développeur et on rentre dans une autre dimension, le non professionnalisme qui ne m’intéresse pas…

À vos commentaires …