Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 1.68 KB

item57_58.md

File metadata and controls

50 lines (39 loc) · 1.68 KB

ITEM 57 : 지역변수의 범위를 최소화하라

1. 가장 처음 쓰일 때 선언하기

  • 거의 모든 지역변수는 선언과 동시에 초기화해야한다.
  • 반복 변수의 값을 반복문이 종료된 뒤에도 써야 하는 상황이 아니라면 while 문보다는 for 문을 쓰는 편이 낫다.

컬렉션이나 배열을 순회하는 권장 관용구

for (Element e : c) {
    ... // e로 무언가를 한다.
}

반복자가 필요할 때의 관용구

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

지역변수를 최소화하는 또 다른 반복문 관용구

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

2. 메서드를 작게 유지하고 한 가지 기능에 집중하는 것

ITEM 58 : 전통적인 for 문보다는 for-each 문을 사용하라

  • 반복자와 인덱스 변수를 사용하지 않으니 코드가 깔끔해지고 오류가 날 일도 없다. 하나의 관용구로 컬렉션과 배열을 모두 처리할 수 있어서 어떤 컨테이너를 다루는지는 신경 쓰지 않아도 된다.

컬렉션과 배열을 순회하는 올바른 관용구

    for (Element e : elements) {
        ... // e로 무언가를 한다.
    }

for-each 문을 사용할 수 없는 상황 세가지

  • 파괴적인 필터링
  • 변형
  • 병렬 반복

핵심 정리

전통적인 for 문과 비교했을 때 for-each 문은 명료하고, 유연하고, 버그를 예방해준다. 성능 저하도 없다. 가능한 모든 곳에서 for 문이 아닌 for-each 문을 사용하다.