ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Java] var는 사용해도 되는 것일까?
    백엔드/Java 2023. 2. 13. 00:05
    반응형

    자동차 경주 미션 2단계의 코드 예시에서는 var를 사용하고 있다. 자바에서 var를 보는 것은 처음이었고, 자바스크립트에서 var는 사용을 지양하라고 나와있어서 선입견 때문에 이걸 과연 사용해도 될까? 라는 생각이 들었다.

     

     

    1. 자바스크립트에서 var 사용을 지양하는 이유

    [호이스팅 현상]

    console.log(foo); undefined
    var foo = 1;
    console.log(foo); 1

     

    자바스크립트는 변수를 설정하면 변수가 속하는 유효 범위(scope) 안에 최상단으로 올려져 선언을 하게 된다.

    사실상 중간에 변수를 선언해도 최상단에 선언하는 것과 같은 효과라서 위와 같은 코드가 나와도 첫번째 줄의 console.log(foo);가 작동하게 된다.

     

    [중복 선언]

    var foo = 1;
    var foo = "a";
    var foo = 1234;

     

    C++이나 Java의 경우에는 위 코드처럼 작성하게 된다면 오류가 발생한다. 하지만 자바스크립트의 경우에는 계속 새로운 선언이 가능하다. 이건 나중에 프로젝트 규모가 커지게 되면 같은 변수명을 사용했을 때, 이전에 있던 변수명에 저장된 값은 사라지기 때문에 큰 문제가 발생하게 된다.

     

     

     

    2. 자바에서의 var는 무엇일까?

    자바에서 var 키워드는 Java 10 버전에 도입된 타입 추론 기능을 지원한다. 타입 추론이란 개발자가 직접 변수의 타입을 작성하지 않고, 컴파일러가 알아서 타입을 찾아 설정하는 것이다.

     

    자바에서 var를 사용하게 된다면 아래의 특징을 가지고 있다.

     

    - 선언과 동시에 초기화를 무조건 해야한다. (타입 추론을 할 대상이 필요)

    - null로 초기화할 수 없다.

    - 로컬 변수에만 사용할 수 있다. (멤버 변수, 메서드 파라미터로 사용 불가)

    - 컴파일할 때 타입이 결정되기 때문에 다른 타입으로 재할당을 할 수 없다.

    - 람다식에서 var 사용이 가능해 var 키워드 앞에 어노테이션을 적용할 수 있다.

     

    var를 사용해서 얻을 수 있는 장점은 코드의 양이 줄어들고 가독성이 향상된다.

    보일러 플레이트 코드란 변형이 거의 없이 여러 곳에서 반복되는 코드로 대표적으로 getter, setter가 있는데, 타입을 명시하는 것도 일종의 보일러 플레이트 코드라고 불린다. 그래서 타입 명시 대신 var를 사용하게 된다면 보일러 플레이트 코드를 줄일 수 있으니 코드의 양이 줄어들고, 변수명과 변수 값에만 집중할 수 있기 때문에 생산성이 늘어난다는 장점을 가질 수 있다고 한다.

    하지만 이런 내용은 사람의 선호도마다 다르기 때문에 같이 협업하는 사람들의 의견이 필요할 것 같다.

     

     

     

     

    결론 : 가독성을 해치지 않는 선에서, 명시적으로 타입을 적어야하는 코드가 아니라면 var를 사용해도 문제 없지 않을까? 

    반응형

    댓글

Designed by Tistory.