-
item 57 지역변수의 범위를 최소화하라책/이펙티브 자바 2022. 4. 21. 17:51
ITEM 57 지역변수의 범위를 최소화하라
지역변수의 유효 범위를 최소로 줄이면 코드 가독성과 유지보수성이 높아지고 오류 가능성은 낮아진다
- C와 같이 역사가 깊은 프로그래밍 언어 중에는 지역변수를 코드 블록의 첫머리에 선언하는 경우가 많으며 습관처럼 이렇게 작성하는 개발자도 많다
- 자바에서는 문장을 선언할 수 있는 곳이면 어디서든 변수를 선언할 수 있어서 이런식으로 작성하지 않아도 된다
- 지역변수의 범위를 줄이는 가장 강력한 기법은 역시 가장 처음 쓰일 때 선언하기다
- 사용하려면 한참 남았는데 미리 선언해두면 코드가 어수선해지고 가독성만 떨어진다
- 변수를 실제로 사용하는 시점에 타입과 초깃값이 기억나지 않을 수도 있다
- 지역변수를 생각 없이 선언하다 보면 변수가 쓰이는 범위보다 너무 앞서 선언하거나 다 쓴 뒤에도 여전히 살아 있게 되기 쉽다
- 지역변수의 범위는 선언된 지점부터 그 지점을 포함한 블록이 끝날 때 까지다
- 실제 사용하는 블록 바깥에 선언된 변수는 그 블록이 끝난 뒤 까지 살아 있게 된다
- 실수로 의도한 범위 앞 혹은 뒤에서 그 변수를 사용하면 끔찍한 결과로 이어질 수 있다
- 거의 모든 지역변수는 선언과 동시에 초기화해야 한다
- 초기화에 필요한 정보가 충분하지 않다면 충분해질 때까지 선언을 미뤄야 한다
- try-catch문은 이 규칙에서 예외다
- 변수를 초기화하는 표현식에서 검사 예외를 던질 가능성이 있으면 try 블록 안에서 초기화 해야된다(예외 전파 방지)
- 변수 값을 try 블록 바깥에서도 사용해야 한다면 try 블록 앞에서 선언해야 한다
- 반복문은 독특한 방식으로 변수 범위를 최소화해준다
- 예전의 for 형태든 새로운 for-each 형태든 반복문에서는 반복변수(loop variable)의 범위가 반복문의 몸체, 그리고 for 키워드와 몸체 사이의 괄호 안으로 제한된다
- 반복 변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면 while 문보다는 for문을 쓰는 편이 낫다
- 반복자를 사용해야 하는 상황이면 for-each 문 대신 전통적인 for문이 낫다
- for문을 사용하면 while문을 사용 하는 경우 보다 복사 붙여넣기 오류를 줄여준다
- 변수 유효범위가 for문 범위와 일치하기 때문
- 또한 for문이 더 짧아서 가독성도 좋다
- 메서드를 작게 유지하고 한 가지 기능에 집중하자
- 한 메서드에서 여러 기능을 처리하면 그 중 한 기능에 관련된 지역변수라도 다른 기능을 수행하는 코드에 영향이 있을 수 있다
- 메서드를 기능별로 쪼개자
- 한 메서드에서 여러 기능을 처리하면 그 중 한 기능에 관련된 지역변수라도 다른 기능을 수행하는 코드에 영향이 있을 수 있다
'책 > 이펙티브 자바' 카테고리의 다른 글
item 59 라이브러리를 익히고 사용하라 (0) 2022.04.21 item 58 전통적인 for 문보다는 for-each문을 사용하라 (0) 2022.04.21 item 56 공개된 API 요소에는 항상 문서화 주석을 작성하라 (0) 2022.04.21 item 55 옵셔널 반환은 신중히 하라 (0) 2022.04.19 item 54 null이 아닌 빈 컬렉션이나 배열을 반환하라 (0) 2022.04.15 - C와 같이 역사가 깊은 프로그래밍 언어 중에는 지역변수를 코드 블록의 첫머리에 선언하는 경우가 많으며 습관처럼 이렇게 작성하는 개발자도 많다