var
コードの即時の理解を減らしながら、コードの可読性を高めることができます。同様に、他の状況でのコードの可読性が低下する可能性があります。時々それの使用は中立です。理解力の読みやすさの尺度は比例していませんが、状況によって異なります。時々両方が一緒に増加または減少します。
要因は、何var
に適用されているか、およびターゲットがそのデータタイプをリーダーに即座に難読化するのをどの程度サポートしているか、または手元のプログラム部分を理解するためにタイプ情報が必要かどうかです。
たとえば、不適切な名前を付けるとvar
、コードの理解度が低下する可能性があります。var
ただし、これはのせいではありません。
var value1 = GetNotObviousValue(); //What's the data type?
//vs.
var value2 = Math.Abs(-3); // Obviously a numeric data type.
var
単純なデータ型を使用しなくても、コードが読みやすくなると意味がない場合があります。
var num = GetNumber(); // But what type of number?
// vs.
double num = GetNumber(); // I see, it's a double type.
次var
の複雑さを確認する必要がないデータタイプ情報を非表示にするのに役立つ場合があります。
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;
匿名型が存在する場合は、それを呼び出すための型名がないため、使用する必要がありますvar
。
var o = new { Num=3, Name="" };
にもかかわらずVisual Studio Intellisenseが型情報を提供している場合var
、支援なしで厳密なコード読み取りを介して理解に頼る必要が少なくなります。誰もがIntellisenseを持っている、または使用しているわけではないと想定するのがおそらく賢明です。
上記の例に基づいて要約すると、var
ここに示すように、ほとんどのことは適度に、手元の状況に基づいて行うのが最善であるため、カルテブランチを適用することはお勧めできません。
なぜResharperはデフォルトでそれをすべて使用するのですか?状況のニュアンスを解析して、いつそれを使用しないのが最善かを判断することができないので、簡単にすることをお勧めします。