카테고리 없음

[TIL] for-each문 & 리팩토링 학습 기록

mooncommit 2026. 3. 30. 21:46

오늘도 어김없이 Java 과제를 하다가 머리가 아파졌다.


오늘 배운 것들

for-each문 (향상된 for문)

for (Product product : productList) {
    System.out.println(product.getName());
}

productList에서 Product를 하나씩 꺼내서 product라고 부르겠다는 뜻이다.
일반 for문이랑 결과는 똑같은데 훨씬 간결하다.


get() 메서드

리스트에서 특정 인덱스 위치의 요소를 꺼내는 메서드다.

categoryList.get(0); // 0번째 꺼내기

리팩토링

처음엔 이렇게 썼다.

if (categoryNumber == 1) {
    categoryList.get(0);
} else if (categoryNumber == 2) {
    categoryList.get(1);
} else if (categoryNumber == 3) {
    categoryList.get(2);
}

근데 카테고리가 늘어날수록 else if가 끝도 없이 늘어난다 😂

알고 보니 categoryNumber랑 인덱스 사이에 규칙이 있었다:

1 입력 → get(0)
2 입력 → get(1)
3 입력 → get(2)

항상 -1 차이! 그래서 이렇게 바꿨다:

categoryList.get(categoryNumber - 1);

한 줄로 해결 완료


리팩토링 전 vs 후

  • 전 - else if 난리 + 카테고리마다 같은 코드 반복:
} else if (categoryNumber == 1) {
    // 전자제품 코드 30줄...
} else if (categoryNumber == 2) {
    // 의류 코드 30줄... (똑같음 ㅋ)
}
  • 후 - else 하나로 통합:
} else if (categoryNumber >= 0 && categoryList.size() >= categoryNumber) {
    Category selectCategory = categoryList.get(categoryNumber - 1);
    List productList = selectCategory.getProductList();
    // 상품 출력, 선택 한 번에 처리!
}

코드가 확 줄었다 ㅎㅎ


 

메서드가 타고타고 깊어지면 안 된다. 코드는 가볍고 깔끔하게!

아직 이해 안 가는 부분도 있어서 여러 번 반복 중이다.. 화이팅 🔥