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 がデフォルトでそれを使用するのはなぜですか? 状況のニュアンスを解析して、いつ使用しないのが最適かを判断できないため、簡単にすることをお勧めします。