본문 바로가기
Spring/ETC

var 타입은 사용하는 것이 좋을까 ? - in Java

by YoonJong 2023. 7. 16.
728x90

먼저 var 타입은 Java 10 에서 도입되었습니다.

변수를 선언할 때 타입을 생략할 수 있으며, 컴파일러가 타입을 추론합니다.

var now = LocalDateTime.now();

.

 

프로젝트 중 반환타입이 길 경우, 코드 컨벤션으로 인해서 칸이 나눠지거나 파라미터가 마음에 들지 않게 내려가는 등,

이쁘지 않은? 것처럼 자동완성 되는 경우가 많았습니다.

 

지금까지 단순히 타입이 길어서 var 로 바꿔 사용하는 경우가 있었는데, 

이후 코드를 다시 보니 어떤 반환타입인지 바로 보이지 않아, 가독성이 떨어진다는 생각을 하게 되었습니다.

 

var 타입에 대해서, 개발자들의 의견이 나뉘는 것 같습니다.

stackoverflow 에서도 이것에 대해 각자 다른 주장을 하는 것을 볼 수 있었습니다.

https://stackoverflow.com/questions/50040439/should-i-use-var-in-java-10

 

Should I use var in Java 10?

Given that I can't use var for non-denotable types (Nulls, Anonymous classes, Some Single Method Class and most importantly Intersecting Types), am I better off not using it for better readability ...

stackoverflow.com

 

var 는 컴파일 시점에 타입체를 하기 때문에, 런타임 시점에 추가 연산을 하지 않아 성능에 영향을 주지 않습니다.

var 타입을 사용하는 것이 자동으로 추론한다는 장점이 있지만, 이에 따른 제약사항이 있습니다.

 

타입을 추론한다는 점을 생각해보면 아래와 같은 제약사항을 이해하기 쉽습니다.

 

1. 지역 변수에서만 사용이 가능합니다.

2. 초기화가 필요합니다.

3. null 로 초기화를 할 수 없습니다.

4. 람다(Lambda) 에서는 사용할 수 없습니다.

 

개인적인 견해로는, var 타입을 지양하는 편이 좋다고 생각합니다.

코드를 간결하게 해주기 때문이라는 장점이 있지만, 이에 따른 유지보수나 가독성을 생각한다면 단점이 더욱 뚜렷하다고 생각하기 때문입니다.

또한, 초기화 과정에서 의도하지 않는 타입 추론이 발생할 수 있습니다.

각 회사, 팀마다 컨벤션이 다르겠지만, var 타입을 사용하게 된다면 명확하게 코드를 이해할 수 있도록 변수의 이름에 더욱 신경을 써서 사용해야 한다고 생각합니다.

 

728x90

댓글