본문 바로가기
TIL

Java 키오스크 과제 - 챌린지 Lv1 트러블 슈팅

by suyeoneee 2024. 11. 28.

 Level 2. 장바구니 및 구매하기 기능을 추가하기

📋 요구사항

  • 장바구니 생성 및 관리 기능
  • 장바구니 출력 및 금액 계산
  • 장바구니 담기 기능
  • 주문 기능

🌀 배경

: 도전 과제를 진행하면서 반복문과 조건문이 배로 늘어나 코드가 복잡해졌다. (300라인 이상..)

 

🌀 발단

: 모든 기능은 다 구현하였지만 코드 가독성이 안 좋아져서 리팩토링이 필요했다.

 

🌀 전개

: 우선, Kiosk 클래스의 start() 내부에 중복되는 코드들을 메서드로 구현하였다. (메인 메뉴 출력, 사용자 입력 및 에러처리, 선택한 메뉴 출력 등..)

 

🌀 위기

:  메서드로 구현하였더니 구조가 이상하게 흘러가고 있었다.. 입력값 처리도 오류가 났다.

장바구니에 메뉴를 추가하면, 다시 입력하라는 에러처리가 뜬금없이 나왔다.
올바르지 않은 입력을 해도 에러처리 X

🌀 절정

: System.out.println 로 오류나는 구간을 캐치해보았더니 반복문에서 break, continue 을 잘못 배치하고 있다거나, 예외 처리 인덱스 구간 설정을 잘못 하고있었다. 코드를 실행해보면서 잘못 작성한 부분을 수정하였더니 잘 작동하였다.

-> 반복되는 코드를 단순히 메서드로 옮기지 않고 핸들러 커맨드 패턴을 구현하면 구조적인 코드가 될 것 같다.! 

 

🌀 결말

리팩토링을 하면서 코드의 길이가 절반가량 줄어들었고 (리팩토링이 더 필요하지만..!) , 오류를 찾기에도 수월해졌다.

하지만 처음부터 요구사항을 분석하여 코드를 구조화하였다면 덜 복잡했을 것 같아 아쉬움이 남는다. 

댓글