[Effective C# Item 1] 지역변수를 선언할 때는 var를 사용하는 것이 낫다
1) 지역변수를 선언할 때는 var를 사용하는 것이 낫다
C#은 타입을 암시적으로 선언할 수 있는 var을 제공한다. 특정 변수를 var로 선언하면 연산자 오른쪽의 타입을 환산하여서 왼쪽 변수의 타입을 결정하게 된다.
그렇다면 var를 무작정 사용하면 타입 선정하는 데 걸리는 시간이 늘어나 컴파일 타임에 악영향을 주는게 아닐까?
결론부터 말하자면 "그렇지 않다." 이다.
var를 사용한다고 해서 컴파일 타임에 큰 영향을 주지도 않을 뿐더러 몇 가지 이득을 취할 수 있다.
1. 암시적으로 변수를 선언한 코드가 더 잘 읽힌다.
var를 사용하면 변수의 타입 같은 중요하지 않은 부분보다 변수의 의미 자체에 더 집중할 수 있다. 하지만 변수의 타입 정보가 필요할 때, 정확하게 유추할 수 있도록 코드를 짜는 편이 좋다.
예로 들어 내장 숫자 타입을 리턴하는 메서드의 경우 메서드 이름에 숫자 타입이 적혀있지 않다면 해당 메서드가 출력하는 리턴값의 타입이 어떤 것인지 확신할 수 없다. 따라서 내장 숫자 타입 같은 경우엔 var보다는 명시적으로 선언해주는 것이 좋다.
2. 타입을 명시적으로 지정했을 때 성능적으로 악영향을 끼칠 가능성이 있다.
예로 들어 C#에는 IEnumerable<T>와 IQueryable<T>가 있다. IQueryable은 IEnumerable을 상속하고 있어
원래는 IQueryable 타입으로 나와야할 q가 IEnumerable로 캐스트되서 값이 지정될 수 있다. 문제는 IEnumerable은 IQueryable로 LINQ Where메서드 작업을 했을 때 보다 성능이 좋지 않다는 것이다.
이와 같은 경우를 방지하고자 var을 사용하는 것이 자칫 성능적으로 악영향을 끼칠 상황을 미연에 방지할 수 있다.
Java를 사용하다가 C#으로 넘어왔을 때 가장 신기하고 편해보였지만 그래도 막상 사용하려니 연산 부담을 주려고 걱정을 하기도 했었다.
하지만 지금은 마음 편하게 사용하고 있고 코딩하는 데도 훨씬 편하다.
모두 var을 애용합시다.
출처 - Effective C# <강력한 C# 코드를 구현하는 50가지 전략과 기법, 이펙티브>, 빌 와그너, 김명신, 한빛미디어