Level 2. 장바구니 및 구매하기 기능을 추가하기
📋 요구사항
- 장바구니 생성 및 관리 기능
- 장바구니 출력 및 금액 계산
- 장바구니 담기 기능
- 주문 기능
🌀 배경
: 도전 과제를 진행하면서 반복문과 조건문이 배로 늘어나 코드가 복잡해졌다. (300라인 이상..)
🌀 발단
: 모든 기능은 다 구현하였지만 코드 가독성이 안 좋아져서 리팩토링이 필요했다.
🌀 전개
: 우선, Kiosk 클래스의 start() 내부에 중복되는 코드들을 메서드로 구현하였다. (메인 메뉴 출력, 사용자 입력 및 에러처리, 선택한 메뉴 출력 등..)
🌀 위기
: 메서드로 구현하였더니 구조가 이상하게 흘러가고 있었다.. 입력값 처리도 오류가 났다.
🌀 절정
: System.out.println 로 오류나는 구간을 캐치해보았더니 반복문에서 break, continue 을 잘못 배치하고 있다거나, 예외 처리 인덱스 구간 설정을 잘못 하고있었다. 코드를 실행해보면서 잘못 작성한 부분을 수정하였더니 잘 작동하였다.
-> 반복되는 코드를 단순히 메서드로 옮기지 않고 핸들러 커맨드 패턴을 구현하면 구조적인 코드가 될 것 같다.!
🌀 결말
리팩토링을 하면서 코드의 길이가 절반가량 줄어들었고 (리팩토링이 더 필요하지만..!) , 오류를 찾기에도 수월해졌다.
하지만 처음부터 요구사항을 분석하여 코드를 구조화하였다면 덜 복잡했을 것 같아 아쉬움이 남는다.
'TIL' 카테고리의 다른 글
Spring - 일정 관리 앱 만들기 과제 트러블 슈팅 (0) | 2024.12.10 |
---|---|
19일차) 객체간의 결합도와 다형성, 인터페이스 (2) | 2024.11.29 |
17일차) 알고리즘, 키오스크 과제 리팩토링 (0) | 2024.11.27 |
14일차) 자바 동등성과 동일성 , equals()와 hashCode() (0) | 2024.11.22 |
Java 계산기 과제 - level 2 트러블슈팅 (0) | 2024.11.20 |
댓글