팀 과제 최종 점검 및 피드백
Spring 기초 시작하기
HTTP 프로토콜의 이해
- 클라이언트와 서버 간의 통신을 위한 프로토콜
해결
if 문으로 한 번 더 값을 걸러낸다면 쉽게 해결할 수 있는 문제겠지만, 그렇게 한다면 입력받은 연도와 월을 기준으로 요일과 날짜를 출력해 주는 반복문을 두 번 넣어야 했다. 50줄이 거뜬히 넘는 코드를 중복으로 넣어야만 한다는 소리다.
가장 쉬운 해결법이지만 가장 최악의 해결법으로 가정하고 다음 방법을 찾아봤다.
두 번째로 달력을 출력하는 반복문을 메서드로 빼려는 노력을 해보았으나 사용하고 있는 변수가 너무 다양해 이 방법도 포기한다.
기존에는 LocalDate.now()
로 가져온 값만을 가지고 비교했다. 때문에 미래의 날짜를 예약하려 해도 지금 달, 일보다 과거라면 예약을 못 하게 된 것이다. 가독성이 좋지 않고 지저분하지만 구조를 갈아엎을 시간이 없는 선에서 채택한 방법은 if 문의 조건을 늘리는 방법이다.
if (year == thisYear && (month < thisMonth || month > 12) || year > thisYear && (month < 0 || month > 12)) { // 입력받은 년도와 올해가 같고 지금보다 과거라면 false // 입력받은 년도보다 미래지만 1~12의 범주를 벗어나면 false System.out.println("예약이 불가능한 달입니다."); System.out.println("다시 입력해주세요");
해결!