손은 눈보다 빠르다.
눈은 손보다 게으르다.
나는 항상 이 말들을 곱씹어본다.
근데 이번만큼은 손이 더 느렸다...
붕어빵 틀에서 찍어낸 붕어빵
과 같은 논리로
공장(부모)에서 찍어낸 자동차(자식)와
그 부품(메서드)들
키오스크를 구현하는 과제다.
머리로 그려보면 그렇게 어려워 보이지 않아서 다른 공부를 하다 주말이 되어서야 손 대기 시작했다.
while 내부에서 switch 로 동작 시키며 기계를 터트릴때까지 영원히 종료되지 않는 방식으로 구현하기로 했다.
int phaseController = 5; // 메인페이즈를 5에 두어, 초기 화면으로 돌아갈때 받는 index를 5로 설정했다.
while (true) {
switch(phasecontroller) {
case 5 :
메인 메뉴
case 1:
버거 메뉴
case 2:
드링크 메뉴
case 3:
오더 메뉴
case 4:
주문 취소하기
default :
오류 문구 출력
case : 5 로 이동
작성하면서 깨닫는 부분이 있었다.
메인메뉴를 default에 두고 phaseController를 0으로 놓고 시작했다면 조금 더 가독성 높은
코드를 완성할 수 있었을것 같다. 덕분에 예기치 않은 버그도 하나 있다는걸 알게 되었다.
예외처리를 하나 삽입하여 처리하기로 했다.
지금 와서 수정하기엔 너무 먼 길을 와버렸다.
아예 전면 리팩토링을 거치지 않는 이상 손댈 방법이 없다...
기존의 switch
switch ( caseInt ) {
case 1 :
실행문 1
break;
case 2 :
실행문 1
break;
case 3 :
실행문 2
break;
default :
실행문;
}
switch 표현식
switch ( caseInt ) {
case 1, 2 -> 실행문 1;
case 3 -> 실행문 2;
default -> 실행문;
yield "반환";
가독성이 조금 떨어지게 되긴 하지만 작성할때는 매우 편리하다는걸 느꼈다.
또한 yield
이라는 메서드를 사용할 수 있는데 이는 return
과 같다.
사용성에 따라 switch
내부에서 목적을 명확하게 하기 위해 yield
를 사용하는게 맞다고는 하는데
솔직히... 이거나 저거나... 아직 필요성 부분에서 의미를 잘 모르겠다.
MENU 라는 최 상위 클래스 (super class?) 에 버거와 드링크를 하위 클래스로 주고,
그 아래에 각 메뉴들을 넣어주었다.
즉, 메뉴 - 음식종류 - 세부항목 순서인 셈.
나누다 보니 개판이 되어버렸다.
이에 대한 부분은 튜터님한테 질문을 하며 보완할 방법 혹은 일반적인 방법을 배워야겠다.