지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 '가장 처음 쓰일 때 선언하기'다. 사용하려면 멀었는데, 미리 선언부터 해두면 코드가 어수선해져 가독성이 떨어진다.
지역변수를 생각 없이 선언하다 보면 변수가 쓰이는 범위보다 너무 앞서 선언하거나, 다 쓴 뒤에도 여전히 살아 있게 되기 쉽다. 지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때까지다. 지역변수를 실제 사용하는 블록 바깥에 선언하고, 실수로 의도한 범위 앞 혹은 뒤에서 그 변수를 사용하면 끔찍한 결과로 이어질 수 있다.
또한 거의 모든 지역변수는 선언과 동시에 초기화해야 한다. 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다. try-catch문은 예외인데, 변수를 초기화하는 표현식에서 검사 예외를 던질 가능성이 있다면 try 블록 안에서 초기화해야 한다. 한편, 변수 값을 try 블록 바깥에서도 사용해야 한다면 try 블록 앞에서 선언해야 한다.
지역변수 범위를 최소화하는 마지막 방법은 메소드를 작게 유지하고 한 가지 기능에 집중하는 것이다. 한 메소드에서 여러 가지 기능을 처리한다면 그중 한 기능과만 관련된 지역변수라도 다른 기능을 수행하는 코드에서 접근할 수 있을 것이다. 해결책은 간단한데, 단순히 메소드를 기능별로 쪼개면 된다.
반복문은 독특한 방식으로 변수 범위를 최소화해준다. 예전의 for 형태든 새로운 for-each 형태든, 반복문에서는 반복 변수(loop variable)의 범위가 반복문의 몸체, 그리고 for 키워드의 몸체 사이의 괄호 안으로 제한된다. 따라서 반복변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면 while 문보다는 for 문을 쓰는 편이 낫다. 컬렉션을 순회할 때는 for-each 문을, 반복자를 사용해야 하는 상황이면 전통적인 for 문을 쓰는 것이 낫다.
for 문은 변수 유효 범위가 for 문 범위와 일치하여 while 문에서 나타날 수 있는 복사해 붙여넣기 오류를 컴파일타임에 잡아준다. 또한 똑같은 이름의 변수를 여러 반복문에서 써도 서로 아무런 영향을 주지 않는다. 추가적인 장점으로 while 문보다 짧아서 가독성이 좋다.
지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 지역변수를 가장 처음 쓰일 때 선언하고, 선언과 동시에 초기화해야 하며, 메소드를 작게 유지하고 한 가지 기능에 집중하면 된다. 또한 반복문을 쓸 때 지역변수의 유효 범위 관점에서 while 문보다 for 문이 더 낫다.