규칙 45. 지역 변수의 유효범위를 최소화하라

지역 변수의 유효범위를 최소화하면 가독성과 유지보수성이 좋아지고, 오류 발생가능성이 줄어든다.

지역 변수의 유효범위를 최소하하는 방법

  • 처음으로 사용하는 곳에서 선언

  • 거의 모든 지역 변수 선언에는 초기값이 포함되어야 한다.

  • while문 보다는 for 문을 쓰는 것이 좋다.

    • while

      Iterator<Element> i = c.iterator();
      while(i.hasNext()) {
        doSomething(i.next());
      }
      ​
      ...
      ​
      Iterator<Element> i2 = c2.iterator();
      while(i.hasNext()) { //버그
        doSomething(i.next());
      }
      
      • 코드 복사 붙여놓기를 하다보니 생긴 버그로, i를 그대로 써버림.

      • 컴파일 단계에서 알 수 없으며, 실행도 되기 때문에 결과를 봐야만 탐지됨.

    • for

      for(Iterator<Element> i = c.iterator(); i.hasNext(); ){
        doSomething(i.next());
      }
      ​
      ...
      ​
      for(Iterator<Element> i2 = c2.iterator(); i.hasNext(); ){
        doSomething(i2.next());
      }
      
      • i를 찾을 수 없기때문에 컴파일 시점에 오류 발생
      for(int i = 0, n = expensiveComputation(); i < n; i++){
        doSomething(i);
      }
      
      • i, n 2개의 순환문 변수를 사용한 예

      • n이 i의 범위를 제한하는 용도로 쓰이는데, 그 값을 계산하는 비용이 큼. (함수)

      • 즉, 미리 계산해 넣어두고 사용하면, for문 안에서 매번 재계산해서 사용할 필요가 없다.

  • 메서드의 크기를 줄이고 특정한 기능에 집중하라.

results matching ""

    No results matching ""