
01. var 키워드의 장점
01. A. 반환 타입 유추
개발하고 있는 프로젝트가 본인이 100% 기여한 것이라면 메서드의 반환 타입에 대해서 쉽게 살펴보거나 알 수 있는 내용들이 많다. 하지만 무심코 넘어갈 수 있는 부분이 있다.
아래의 코드를 보자.
public abstract class Animal {
...
}
public class Dog : Aniaml {
public Dog Getdog() { return new Dog(); }
}
...
public class Program {
private static void Main() {
Animal animal = new Animal();
Dog dog = new Dog();
animal = dog.GetDog();
}
}
이렇게 코드를 작성할 일은 없겠지만, 프로젝트 규모가 커질수록 헷갈릴 수 있다. GetDog 메서드를 추상화 작업을 위해서 처리된 것이라면 문제가 없겠지만, Dog 클래스의 다른 메서드가 필요한 상태라면 에러로 이어질 수 있다.
이러한 상황은 var 키워드를 통해서 Dog 클래스가 할당될 수 있도록 처리할 수 있다.
01. B. 코드 가독성 향상
Dictionary<string, UnitStatusData> unitDictionry = new Dictionary<string, UnitStatusData>();
위와 같이 긴 코드가 있을 때, 다음과 같이 변경할 수 있다.
var unitDictionry = new Dictionary<string, UnitStatusData>();
코드의 타입을 알기에도 어렵지 않다.
02. var 키워드에 대한 오해
컴퓨터 언어의 분류는 동적 타이핑 언어와 정적 타이핑 언어로 나눌 수 있다. 간단하게 설명하면 동적 타이핑 언어는 런타임에서 변수의 타입이 정해지고 정적 타이핑 언어는 컴파일에서 변수의 타입이 정해진다.
C#은 정적 타이핑 언어에 속한다. var 키워드를 사용하면 동적 타이핑을 진행하는 것으로 알 수 도 있겠지만 var 키워드는 컴파일 시점에서 전달 받은 데이터를 추론해서 변수의 타입을 지정하는 것이다. C#에서 동적 타이핑을 사용하기 위해서는 C# 4.0에 추가된 Dynamic 키워드를 통해서 진행할 수 있다.
결론적으로 var 키워드는 정적 타이핑이다.
03. var 키워드를 사용하는 것이 나을 뿐이지 절대적으로 좋은 것은 아니다.
상황에 따라서 var 키워드를 적절히 사용하는 것이 올바르다. 만약에 var 키워드를 통해서 컴파일러가 타입을 지정하게 한다면 전달하는 타입이 명확해야한다.
컴파일러의 성능이 좋아지면서 이러한 부분은 에러로 감지하고 어떤 부분이 잘못되었는지 찾아주고 있지만 저성능의 컴파일러를 사용한다면 이러한 것을 인식하고 있어야 한다.
'독서 > Effective C#' 카테고리의 다른 글
[Effective C#] nameof 연산자를 적극 활용하라 | 2024.08.01 |
---|---|
[Effective C#] 문화권별로 다른 문자열을 생성하려면 FormattableString을 사용하라 | 2024.07.31 |
[Effective C#] string.Format을 보간 문자열로 대체하라 | 2024.07.30 |
[Effective C#] 캐스트보다는 is, as가 좋다 | 2024.07.29 |
[Effective C#] const보다는 readonly가 좋다. | 2024.07.24 |