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() 코드 블록에 선언되어 있어서 두 가지 문제가 발생한다.
비효율적인 메모리 사용: temp 는 if 코드 블록에서만 필요하지만, main() 코드 블록이 종료될 때 까지 메모리에 유지된다. 따라서 불필요한 메모리가 낭비된다.
코드 복잡성:
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 생존 종료
}