Java 스코프

지정욱·2024년 4월 27일
0

Scope(스코프)란 무엇일까? 변역을 하면 범위라고 나온다.
자바에서 스코프도 마찬가지로 접근 범위라는 것이 있다.

다음 코드에서 분석해 보도록 하자!

public class Scope {
    public static void main(String[] args) {
        int m = 10;
        int temp = 0;
        if (m > 0) {
            temp = m * 2;
        }
        System.out.println("m = " + m);
        System.out.println("temp = " + temp);
    }
}

이 코드는 좋은 코드라고 볼 수 없다.
왜냐하면 temp변수는 if 조건이 만족할 때 임시로 잠깐 사용하는 변수인데 main() 코드 블록에 선언되어 있어서 두 가지 문제가 발생한다.

  1. 비효율적인 메모리 사용: temp 는 if 코드 블록에서만 필요하지만, main() 코드 블록이 종료될 때 까지 메모리에 유지된다. 따라서 불필요한 메모리가 낭비된다.

  2. 코드 복잡성:
    temp 는 if 코드 블록 안에서만 필요하고, 여기서만 사용하면 된다.
    그렇기 때문에 if 코드 블록안에 선언되었다면, temp에 대한 생각을 더이상 하지 않아도 됐는데 더욱 복잡해 진것으로 볼 수 있다. 비록 지금은 코드가 짧아서 복잡해 보일 수 있지만, 만약 코드가 몇 백줄이라고 생각한다면 Scope를 줄이는게 좋은 코드라고 생각할 것이다.

이제 코드에서 Scope를 줄여보도록 하자!

public class Scope {
    public static void main(String[] args) {
        int m = 10;

        if (m > 0) {
            int temp = 0; // 스코프 줄이기
            temp = m * 2;
            System.out.println("temp = " + temp);
        } // temp 생존 종료
        System.out.println("m = " + m);
    } m 생존 종료
}
profile
T자형 개발자가 되자

0개의 댓글