과제용으로 파이썬을 몇번 이용해봤는데 변수의 타입을 지정해도 자꾸 지멋대로 변해서 불편한 점이 한두가지가
아니었다. 나는 웬만하면 명시적으로 변수를 선언해주는 편인데 var키워드의 장점이 대체 뭐가 있는지, 성능면에서는 어느것이 뛰어날지 궁금해서 찾아보았다.
Effective C# 에 있는 글을 찾아보았다.
- var로 선언하면 동적 타이핑이 수행되는 것이 아니라 할당된 오른쪽 값을 확인하여 컴파일러에 의해 왼쪽 변수의 타입을 결정하게 된다. 컴파일러에게 변수의 타입을 명시적으로 알려주지 않아도 개발자를 대신하여 올바른 타입을 추론해주는 것이다.
- var를 사용함으로써 코드를 간결하고 가독성이 좋아질 수 있다. 대신 변수명을 통해 그 역할이 정확히 유추될 수 있도록 구현하는게 좋다. 코드를 명시적으로 드러내야 하는 경우가 아니라면 var를 사용하는 것이 좋다. 그러나 지역변수의 타입을 명확히 유추할 수 없고 모호할 경우엔 차라리 명시적으로 선언하는 코드가 낫다.
- 숫자 내장 숫자타입(int, float, double ...) 사용 시 var는 주의해야한다. 각각의 정밀도가 다르기 때문에 var를 사용할 경우 가독성과 정밀도에 있어 오류가 발생할 수 있기 때문에 명시적으로 선언하는 편이 낫다.
=> 정리하자면 가독성에 도움이 되고, 실수를 방지하기 위해서 var키워드를 사용하길 장려한다는 것
대신 숫자 내장타입에 있어서는 사용하지 않는게 좋단다. 이건 너무 당연해서 패스
성능면에서는 ?
var 키워드를 사용하면 컴파일러가 변수의 타입을 추론하기 때문에 코드량이 줄어들고 가독성이 좋아지기 때문에 일반적으로는 성능 면에서는 영향을 미치지 않는단다.
하지만 var를 사용할 때 주의할 점은 변수의 타입을 추론하기 위해 컴파일러가 메모리를 사용하게 된다는 점입니다. 따라서 메모리가 제한적인 환경에서는 var를 남용하면 메모리 사용량이 늘어나 성능에 영향을 줄 수 있습니다. 이러한 경우에는 변수의 타입을 명시해주는 것이 좋습니다.
결론
당연히 변수의 형식을 추론하는데 일반적인 선언보다 효율적일 수는 없다. 생각했던 대로 성능면에서는 그렇게 좋을 것이 없지만 가독성에 좋아서 사용한다는 것.
'프로그래밍 언어 > c#' 카테고리의 다른 글
C# 8.0 Switch expression (0) | 2023.05.14 |
---|---|
c# 8.0 정리 (0) | 2023.05.14 |
C#7.0 ref local, return, struct, Throw expression (0) | 2023.04.29 |
c#7.0 Tuple, Local Function, out, binary literal, Deconstructor (0) | 2023.04.29 |
C# 7.0 패턴 매칭 (2) | 2023.04.29 |