Home [Effective Java] Item57. 지역변수의 범위를 최소화하라!
Post
Cancel

[Effective Java] Item57. 지역변수의 범위를 최소화하라!

Item57. 지역변수의 범위를 최소화하라!

Intro

  • 아이템 15에서 얘기한 ‘클래스와 멤버의 접근 권한을 최소화하라’의 취지와 비슷한 맥락이다.
  • 지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고, 오류 가능성은 낮아진다.

지역 변수 범위 최소화

가장 처음 쓰일 때 선언하기

  • C와 같이 역사가 있는 언어들 같은 경우 지역변수를 코드 블록 첫 머리에 선언하는 경우가 많다.
  • 자바에서는 문장을 선언할 수 있는 곳이면 어디서든 가능하니 이러한 습관은 지양하는 것이 좋다.
  • 미리 선언부터 해두면 코드가 어수선해질 수 있고, 가독성이 떨어지기 때문이다.
  • 지역변수의 범위는 코드 블록의 안쪽이니 잘 고려하여 사용해야 한다. -> 사용이 끝났는데도 할당이 해제되지 않아 가비지 컬렉터가 수거해가지 못하는 문제 발생하지 않도록 하자.

선언과 동시에 초기화하기

  • 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다.

  • try-catch 문은 예외다.

    • 변수를 초기화하는 표현식에서 검사 예외를 던질 가능성이 있다면 try 블록 안에서 초기화해야 한다.

    • 한편, 변수 값을 try 블록 바깥에서도 사용하고자 한다면 try 블록 앞에서 선언해야 한다.

      1
      2
      3
      4
      5
      6
      7
      
      int myBook;
          
      try {
        	myBook = Book.getId();
      } catch (Exception e) {
        	// Exception
      }
      

for문 사용 권장

  • 반복 변수의 값을 반복문이 종료된 이후에도 사용하는 것이 아닌 이상, while 문보다는 for 문을 사용하자.
  • 마찬가지로 반복에서 인덱스를 사용할 일이 있다면, for-each 보다는 for문을 사용하는 것이 변수 선언을 줄이고, 범위를 최소화하는 일이다.
  • for 문은 while 문보다 짧아서 가독성이 더 좋다.

메서드를 작게 유지하고, 한 가지 기능에 집중하기

  • 한 메서드에서 여러 가지 기능을 처리한다면, 그중 한 기능과만 관련된 지역변수라도 다른 기능을 수행하는 코드에서 접근이 가능해진다.
  • 메서드를 기능별로 쪼개 해결하자.
This post is licensed under younghwani by the author.

[Effective Java] Item56. 공개된 API 요소에는 항상 문서화 주석을 작성하라!

[Effective Java] Item58. 전통적인 for 문보다는 for-each 문을 사용하라!

Comments powered by Disqus.