Je comprends la nécessité du var et il remplit parfaitement son rôle. Ne pas avoir de mot-clé et définir des variables à la volée sans type est effrayant. Vous blessez le prochain gars qui doit maintenir votre code ou vous-même si vous devez retravailler le code que vous n'avez pas touché depuis plus d'un an. Je ne suis pas sûr que ce soit une porte à ouvrir en C# et j'espère qu'elle ne le sera pas car var cause déjà des problèmes de lisibilité lorsqu'il est surutilisé alors qu'il n'est pas nécessaire.
Presque tous les exemples .net 3.5 que je vois ces derniers temps ont toutes les variables définies avec var.
L'argument que j'avance est qu'il sacrifie vraiment la lisibilité au nom de l'économie de frappe lorsqu'il est surutilisé. Par exemple :
// What myVar is, is obvious
SomeObject myVar = new SomeObject();
// What myVar is, is obvious here as well
var myVar = new SomeObject();
Le problème que je vois est que les gens l'utilisent partout... par exemple :
// WTF is var without really knowing what GetData() returns?
// Now the var shortcut is making me look somewhere else when this should
// just be readable!
var myVar = GetData();
// If the developer would have just done it explicitly it would actually
// be easily readable.
SomeObject myVar = GetData();
Donc le prochain argument sera, il suffit de mieux nommer la fonction...
var weight = GetExactWeightOfTheBrownYakInKilograms();
On ne sait toujours pas ce qui va revenir. Est-ce un int, un décimal, un float, un objet de poids, quoi ? Je dois toujours perdre du temps à le chercher... j'ai besoin de la béquille intellisense pour sauver la journée de ma programmation paresseuse. Peut-être inclure le type de retour dans le nom de la fonction. Bonne idée, maintenant l'utilisation de var ne nous a rien épargné à part le fait que toutes mes fonctions ont des noms vraiment longs.
Je pense que les gens utilisent trop de var et que cela conduit à une programmation paresseuse qui, à son tour, conduit à un code plus difficile à lire. Chaque fois que vous tapez le mot clé var, vous devriez avoir une bonne raison de l'utiliser au lieu d'être explicite.
3 votes
Je ne toucherai pas ça avec une perche de 10 mètres. Eh bien, à part pour dire que je suis d'accord avec vous. Je ne comprends pas non plus. :)
4 votes
Eh, en quoi votre exemple de deuxième ligne est un code valide en c# ?
6 votes
@Pauli Østerø - ce n'est pas le cas, la question (à laquelle on a répondu depuis longtemps) est pourquoi pas ?
0 votes
Boo semble être mort. Qu'avez-vous lu exactement ? Peut-être faudrait-il mieux l'expliquer au lieu de le deviner à partir d'une URL morte.