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가 기본적으로 왜 전체를 사용합니까? 나는 그것을 사용하지 않는 것이 가장 좋은시기를 결정하기 위해 상황의 뉘앙스를 파싱 할 수 없기 때문에 쉽게 제안 할 것입니다.