1. 기본 구조 - List 사용
먼저 상품들을 관리하기 위해 List를 사용함.
List<Product> products = new ArrayList<>();
Product product1 = new Product("Galaxy S25", 1200000, "최신 안드로이드 스마트폰", 10);
Product product2 = new Product("iPhone 16", 1350000, "Apple의 최신 스마트폰", 10);
products.add(product1);
products.add(product2);
2. 향상된 for문으로 출력하기
처음에는 향상된 for문을 사용해서 데이터를 출력함
for (Product item : products) {
System.out.println(
item.getProductName() + " ㅣ " +
item.getPrice() + "원 ㅣ " +
item.getDescription()
);
}
장점
- 코드가 간결함
- 읽기 쉬움
단점
- 인덱스 접근이 불가능 (번호 출력 어려움)
3. 일반 for문으로 변경 (인덱스 활용)
상품 번호를 출력해야 해서 일반 for문으로 변경
for (int i = 0; i < products.size(); i++) {
Product item = products.get(i);
System.out.println(
(i + 1) + ". " +
item.getProductName() + " ㅣ " +
item.getPrice() + "원 ㅣ " +
item.getDescription()
);
}
장점
- 인덱스 활용 가능 (번호 출력 가능)
- 메뉴 구조 만들 때 유리
4. switch문으로 선택 처리 시도
처음에는 선택 처리를 switch문으로 작성하려고..이딴식으로 함 ㅋㅋ
switch (choice) {
case 1 :
System.out.println("1. " + products.get(0).getProductName() + " ㅣ " + products.get(0).getPrice() + "원 ㅣ " + products.get(0).getDescription());
break;
case 2 :
System.out.println("2. " + products.get(1).getProductName() + " ㅣ " + products.get(1).getPrice() + "원 ㅣ " + products.get(1).getDescription());
break;
문제점
- 코드가 길어짐
- 상품 개수가 늘어나면 유지보수 어려움
5. if문 + 리스트 index 활용으로 리팩토링
최종적으로는 if문 + 리스트 index를 활용해서 구조를 개선함
if (choice == 0) {
return;
} else if (choice > products.size()) {
System.out.println("올바른 숫자를 입력해주세요.");
} else {
Product selected = products.get(choice - 1);
System.out.println(
selected.getProductName() + " ㅣ " +
selected.getPrice() + "원 ㅣ " +
selected.getDescription()
);
}
장점
- switch보다 확장성 좋음
- 코드 중복 제거
- 리스트 구조와 자연스럽게 연결됨
마무리
이번 프로젝트를 통해 단순히 코드를 작성하는 것보다
구조를 어떻게 설계하느냐가 더 중요하다는 것을 느꼈다.
특히 List + 반복문 조합은 앞으로도 계속 쓰게 될 핵심 패턴이라
이번 리팩토링 경험이 꽤 큰 도움이 될 것 같다.
'TIL' 카테고리의 다른 글
| [트러블슈팅] 고객 조회 시 주문 통계(총 주문 수 / 총 구매 금액) 추가하기 (0) | 2026.07.14 |
|---|---|
| [Spring] MVC에서 자주 사용하는 객체와 어노테이션 정리 (0) | 2026.07.08 |
| 람다(Lambda)와 스트림(Stream) 간단 정리 (0) | 2026.06.22 |
| Java - Enum으로 문자열 입력값과 연산자를 매칭하기 (0) | 2026.06.19 |
| TIL - 코드 리팩토링 (중복된 코드 메서드로 만들기) (0) | 2026.06.18 |