21Fermer23
GoldenCrystalLe 12/07/2012 à 11:52
Je considère que l'inférence de types sur les types primitifs n'est pas forcement une bonne idée (on devine pas forcément avec le nom de la variable que c'est un entier 32 bits ou 64 bits) par contre, il n'y a aucune raison de s'en priver pour les types définis par l'utilisateur.
En général, la sémantique est plus intéressante que le type exact de la valeur, même s'il n'est pas totalement inutile de connaître celui-ci.
De plus, comme dans l'exemple donné par Brunni, le type apparaîtrait encore clairement avec inférence de type.
Et l'inference de type "à droite" est une très mauvaise idée... Simplement parce qu'il y a plus dans l'inference de type qu'une simple utilisation de new...

Exemple concret en C#: var mainMethod = typeof(Program).GetMethod("Main"); foreach (var parameter in mainMethod.GetParameters) Console.WriteLine(parameter.Name);

Quand je fais ça, je me fiche royalement que le type exact de "mainMethod" soit MethodInfo, ça représente une méthode et une méthode a des paramètres, c'est tout ce qui m'intéresse.
De même, je me fiche que "parameter" soit de type "ParameterInfo". Un paramètre de méthode à un nom un type, et quelques autres propriétés (position, valeur par défaut, etc.) mais si tu ne sais pas ça, ce n'est pas le fait de connaître le type exact qui va t'aider beaucoup plus.

Et fort heureusement, l'inference de type est déterministe dans les langages fortement typés, donc si tu as un doute, tu trouveras rapidement le type de ta valeur en utilisant un IDE moderne smile