var
peut augmenter la lisibilité du code tout en diminuant la compréhension immédiate du code. De même, elle peut diminuer la lisibilité du code dans d'autres situations. Parfois, son utilisation est neutre. La mesure de la lisibilité par rapport à la compréhension n'est pas proportionnelle mais dépend de la situation. Parfois, les deux sont augmentés ou diminués en même temps.
Le facteur est ce qui var
et dans quelle mesure la cible supporte l'obscurcissement immédiat de son type de données pour le lecteur, ou si l'information sur son type est nécessaire pour comprendre la partie du programme en question.
Par exemple, une mauvaise dénomination peut conduire à var
entraînant une diminution de la compréhension du code. Ce n'est pas var
Mais c'est la faute de l'homme :
var value1 = GetNotObviousValue(); //What's the data type?
//vs.
var value2 = Math.Abs(-3); // Obviously a numeric data type.
Parfois, il n'est pas judicieux d'utiliser var
pour les types de données simples lorsque le code est plus lisible en son absence :
var num = GetNumber(); // But what type of number?
// vs.
double num = GetNumber(); // I see, it's a double type.
Parfois var
peut être utile pour cacher des informations sur les types de données dont on ne veut pas nécessairement voir la complexité :
IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>> q = from t in d where t.Key == null select t; // OMG!
//vs.
var q = from t in d where t.Key == null select t;
// I simply want the first string, so the last version seems fine.
q.First().Key;
Vous doit utiliser var
lorsqu'un type anonyme est présent car il n'y a pas de nom de type pour l'appeler :
var o = new { Num=3, Name="" };
Lorsque l'Intellisense de Visual Studio fournit des informations sur les types en dépit de la présence de var
Vous devez alors moins vous fier à votre compréhension en lisant le code sans aide. Il est probablement sage de supposer que tout le monde n'a pas ou n'utilise pas Intellisense.
En résumé, sur la base des exemples ci-dessus, Je suggérerais l'application carte blanche de var
n'est pas une bonne idée, car la plupart des choses doivent être faites avec modération et en fonction des circonstances, comme le montre l'exemple suivant.
Pourquoi Resharper l'utilise-t-il toujours par défaut ? Je dirais que c'est par facilité, parce qu'il ne peut pas analyser les nuances des situations pour décider quand il vaut mieux ne pas l'utiliser.
6 votes
Aussi - stackoverflow.com/questions/737835/resharper-and-var
30 votes
J'y ai réfléchi pendant un certain temps et j'en suis arrivé à la conclusion que je devrais toujours utiliser
var
même lorsque le type n'est pas du tout évident ! la raison en est qu'il fuerzas de choisir le nom le plus descriptif possible, ce qui rend le code beaucoup plus lisible. En fin de compte, cela permet également de séparer la logique de l'implémentation. Bien sûr, ce n'est que mon opinion, j'espère que cela aidera quelqu'un ;).