250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 스프링부트와AWS로혼자구현하는웹서비스
- 클린코드
- 자바예외
- 자료구조
- jpa
- CleanCode
- 자바스터디
- 이팩티브 자바
- react
- 알고리즘분석
- 자바
- 인프런백기선
- SQL쿡북
- aop
- 알고리즘
- 네트워크
- AWS RDS
- 이펙티브자바
- mysql
- vue.js
- java
- 인프런김영한
- 인덱스
- 도메인 주도 개발 시작하기
- DDD
- AWS
- MariaDB
- 혼공SQL
- 기술면접
- 이펙티브 자바
Archives
- Today
- Total
기록이 힘이다.
[이펙티브 자바]아이템 57 지역변수의 범위를 최소화하라 본문
728x90
지역변수의 유효 범위를 최소로 줄이면 코드 가족성과 유지보수성이 높아지고 오류 가능성은 낮아진다.
지역변수의 범위를 줄이는 가장 강력한 기법은 역시 ‘가장 처음 쓰일 때 선언하기’다.
컬렉션이나 배열을 순회하는 권장 관용구
for(Element e: c){
...
}
반복자를 사용해야 하는 상황이면 for-each 문 대신 전통적인 for문을 쓰는 것이 낫다.
for(Iterator<Element> i = c.iterator(); i.hasNext();){
Element e = i.next();
...
}
for문은 변수 유효 범위가 for문의 범위와 일치하여 똑같은 이름의 변수를 여러 반복문에서 써도 서로 아무런 영향을 주지 않는다.
<while문>
Iterator<Element> i = c.iterator();
while(i.hasNext()){
doSomething(i.next());
}
...
Iterator<Element> i2 = c2.iterator();
while(i.hasNext()){ //버그 - 위와 동일 변수 사용
doSometingElse(i2.next());
}
<for문>
for(Iterator<Element> i = c.iterator(); i.hasNext();){
Element e = i.next();
...// e와 i로 무언가를 한다.
}
//다음 코드는 "i를 찾을 수 없다"는 컴파일 오류를 낸다.
for(Iterator<Element> i2 = c2.iterator(); i.hasNext();){
Element e2 = i2.next();
...// e2와 i2로 무언가를 한다.
}
지역변수 범위를 최소화하는 마지막 방법은 메서드를 작게 유지하고 한 가지 기능에 집중하는 것이다.
'JAVA' 카테고리의 다른 글
[이펙티브 자바] 56. 공개된 API 요소에는 항상 문서화 주석을 작성하라 (0) | 2023.04.19 |
---|---|
왜 우리는 비검사 예외를 선호하는가?(UncheckedException) (0) | 2023.04.13 |
[이펙티브 자바]아이템55. 옵셔널 반환은 신중히 하라 (0) | 2023.04.10 |
[이펙티브 자바] 아이템45 스트림은 주의해서 사용하라 (0) | 2023.04.07 |
[이펙티브 자바]아이템44 표준 함수형 인터페이스를 사용하라 (0) | 2023.04.07 |