[교재 EffectiveJava] 아이템 57. 지역변수의 범위를 최소화하라

반응형
728x90
반응형

지역변수의 유효범위

지역 변수의 유효 범위를 최소로 줄이면 코드 가득성과 유지보수성이 높아지고 오류 가능성은 낮아진다. 자바에서는 문장을 선언할 수 있는 어느 곳이면 어디서든 변수를 선언할 수 있다.

 

지역변수의 범위를 줄이는 가장 강력한 방법은 '가장 처음 쓰일때 선언하기'다. 미리 선언부터 해두면 코드가 어수선해진다. 변수를 실제로 사용하는 시점엔 타입과 초깃값이 기억나지 않을 수도 있다.

 

지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때 까지다.

package com.java.effective.item57;

public class Main {
    public static void main(String[] args) {
        int test = 1;
        
        /* 블록이 끝날때까지 유효 */
    }
}

 

거의 모든 지역변수는 선언과 동시에 초기화되어야 한다. 초기화에 필요한 정보가 충분하지 않다면, 충분해질때까지 선언을 미뤄야한다. 

 

 

반복문

컬렉션 또는 배열을 순회하는 권장 관용구
for (Element e : c) {
    ... // e로 무언가를 한다.
}

반복자를 사용해야하는 상황이면 for-each 문 대신 전통적인 for문을 쓰는 것이 낫다.

 

for문
for (Iterator<Element> i = c.iterator(); i.hasNext();) {
    Element e = i.next();
    ... // e와 i로 무언가를 한다.
}

위 for문을 사용하면 변수 유효 범위가 for문 범위와 일치하여 똑같은 이름의 변수를 여러 반복문에서 써도 서로 아무런 영향을 주지 않는다. 

for (int i = 0, n = expensiveComputation(); i < n; i++) {
    ... // i로 무언가를 한다.
}

위 코드에서 범위가 정확히 일치하는 반복 변수 i, n이 있다. 반복 여부를 결정짓는 변수 i의 한곗값을 변수 n에 저장하여, 반복할때마다 계산해야하는 비용을 없앴다.

 

 

메서드 지역변수

지역변수 범위를 최소화하는 마지막 방법은 메서드를 작게 유지하고 한가지 기능에 집중하는 것이다. 한 메서드에서 여러 가지 기능을 처리한다면 그중 한 기능과만 관련된 지역변수라도 다른 기능을 수행하는 코드에서 접근할 수 있다. 메서드를 단순히 기능별로 쪼개서 지역변수의 범위를 최소화하자.

 

 

반응형

Designed by JB FACTORY