230609_

hoy_·2023년 6월 11일
0

Today, I Learned

목록 보기
16/36

1. 오늘의 일정

  1. 팀 과제 최종 점검 및 피드백

  2. Spring 기초 시작하기




2. 배운 내용

  1. HTTP 프로토콜의 이해
    - 클라이언트와 서버 간의 통신을 위한 프로토콜

    • 프로토콜 : 데이터 교환 방식을 정의하는 규칙 체계



3. 발생한 오류

  1. 프로젝트 제출만을 남기고 최종 점검에서 찾아낸 오류가 있었다.
    호텔 방을 예약할 날짜를 입력받는 과정에서 연도가 지금 날짜보다 미래라면 달과 일을 초기화, 만약 입력한 연도가 올해라고 해도 입력받은 달이 미래라면 일을 초기화해줘야 했다.

해결

  1. if 문으로 한 번 더 값을 걸러낸다면 쉽게 해결할 수 있는 문제겠지만, 그렇게 한다면 입력받은 연도와 월을 기준으로 요일과 날짜를 출력해 주는 반복문을 두 번 넣어야 했다. 50줄이 거뜬히 넘는 코드를 중복으로 넣어야만 한다는 소리다.
    가장 쉬운 해결법이지만 가장 최악의 해결법으로 가정하고 다음 방법을 찾아봤다.

  2. 두 번째로 달력을 출력하는 반복문을 메서드로 빼려는 노력을 해보았으나 사용하고 있는 변수가 너무 다양해 이 방법도 포기한다.

  3. 기존에는 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("다시 입력해주세요");

해결!




4. 앞으로의 나는

  1. 이제 Spring에 들어가는데 진도를 따라가지 못할까 봐 걱정이 많다.
  2. 새로운 개념을 익히기엔 절대적인 시간을 들이는 방법밖에 없으니 한두 시간 정도 복습을 추가해야 할 것 같다.
profile
배우는 사람

0개의 댓글