J'ai fait mon exemple en utilisant des valeurs littérales, mais il aurait aussi pu s'agir de variables ou de n'importe quelle expression. J'ai souvent vu des erreurs de ce type arriver parce que l'une des valeur provenait de l'interface utilisateur et qu'il s'agissait de la valeur du contrôle (le plus souvent une chaîne). Avec la plupart des opérateurs arithmétiques, cela passe inaperçu mais avec un "+", des comportements étranges peuvent apparaître sans être immédiatement identifiés (la valeur finale n'est pas correcte mais tout de même un numérique si la chaîne contient un nombre). Si ces opérateurs n'acceptaient pas des opérandes de types différents (en levant une exception par exemple) de telles d'erreurs ne pourraient pas passer inaperçues.
Cela étant dit, je le répète encore une fois, quelque soit le langage de bons tests sont une nécessité et devraient permettre de détecter ce genre de problèmes si un compilateur ne l'a pas fait avant.
Partager