Tiny Star

🏕️내일배움캠프/📂키오스크 시스템 만들기(23.05.26)

키오스크 refactoring

청크 2023. 12. 27. 13:55

최근 김영한 선생님의 Java 강의를 다시 들으면서 복습 중인데 입문 강의가 종료된 기념으로 

과거 Java의 J도 잘 모르던 시절 부트캠프 개인과제였던 키오스크 시스템을 재정비 해보았다.

 

우선 while문을 돌 때 가장 먼저 출력해야하는 Main Category.

 

1. HashMap을 하나하나 출력해주던 코드를 for문을 완벽하게 쓸 수 있게 되었기 때문에 전부 for문으로 돌면서 출력할 수 있도록 코드를 간결히 했다.

// System.out.println(menuList.get(1));
// System.out.println(menuList.get(2));
// System.out.println(menuList.get(3));
// System.out.println(menuList.get(4));
// System.out.println(menuList.get(5)); // HashMap 호출

 for (int i = 1; i <= menuList.size(); i++) {
  System.out.println(menuList.get(i));
   }

 

2. if문으로 작성된 코드를 swich문으로 변경하고 String으로만 받던 scanner를 int로 직접 받아서 형변환 해주는 코드를 삭제

switch (order) {
	case 1 :
		commodity.output(espresso); //에스프레소 종류가 commodity 메서드 출력
			//에스프레소 선택 시
			Scanner scanner1 = new Scanner(System.in); // 메뉴선택 스캐너
			int espressoNumber = scanner1.nextInt() ; // 유저가 입력한 특정 숫자값받기

			Menu espressoList = (Menu) espresso.get(espressoNumber - 1); // 고객이 입력한 내용
			System.out.println(espressoList.getName() + " | " + espressoList.getExplanation() + " | " + espressoList.getPlace());


			System.out.println("위 메뉴를 장바구니에 추가하시겠습니까?");
			System.out.println("1. 확인   2. 취소");
			int espressoCheck = input.nextInt();

			if (espressoCheck == 1) {
				orderList.add(espressoList);
				System.out.println("선택하신 메뉴가 장바구니에 추가되었습니다.");
			} else {
			}
		break;
		.
		.
		.

 

3. 주문 완료 후 대기 번호를 안내하는 메서드 생성

 

System.out.println("대기번호는 [1] 번 입니다."); //아직 구현할 수 없는 영역...

과거에는 번호 카운터를 세는 코드를 작성할 줄 몰라서 직접 출력하는 코드로 두었었다.

 

 
private static int orderNumberCounter = 1; // 주문 대기번호 카운터
static int generateOrderNumber() {

    return orderNumberCounter++; // 대기번호 증가 및 반환
}
System.out.println("대기번호는 ["+ Order.generateOrderNumber() + "] 번 입니다.")

Order Class에서 대기번호 카운터를 하는 메서드를 하나 만들어 준 뒤에 Kiosk Main Class에서 불러와주는 코드로 리팩토링 해봤다.

 

추가로 분명 배열이나 swich문 내에서 반복적으로 주문 메뉴를 확인하는 것에 대해서도 메서드를 이용해서

간단하게 리팩토링이 될 것 같긴하나 아직 절차지향적인 코드를 가지고 간결하게 바꾸는 작업은 쉽지 않은 것 같다.

 

새로 코드를 짜는 것 보다 기존의 코드를 변경하는게 더 어렵다고 생각한다.

 

나머지 자바 강의를 다 듣고 조금 더 실력이 향상되면 이 프로젝트를 다시 리팩토링 해봐야겠다.