우아한 테크코스 6기 프리코스 4주차 회고

정훈·2023년 11월 17일
1

우테코

목록 보기
8/8

요번 4주차는 프라이빗 저장소에서 문제를 풀어 4주차를 완료하였다. 처음 문제를 보자마자 조금 쫄았다...문제에 대한 지문이 이전 문제보다는 조금 길었기 때문이다...왜 항상 쫄고 시작하는지..쫄보가 맞는듯하다.

문제 개요

아래 달력 및 메뉴를 보면서 12월 이벤트 계획과 요청에 대해서 개발을 하는 것

기능 요구 사항

//메뉴 
<애피타이저>
양송이수프(6,000), 타파스(5,500), 시저샐러드(8,000)

<메인>
티본스테이크(55,000), 바비큐립(54,000), 해산물파스타(35,000), 크리스마스파스타(25,000)

<디저트>
초코케이크(15,000), 아이스크림(5,000)

<음료>
제로콜라(3,000), 레드와인(60,000), 샴페인(25,000)

문제의 고민

메뉴

맨 처음에 첫번째로 고민했던 건 메뉴였던 것 같다. 맨 처음엔 ENUM 을 사용하여 메뉴를 다 담을 생각이였는데, 점점 생각을 계속하다보니 추가적인 메뉴가 생기면 그때가서 또 고쳐야하고 여러가지 복합적인 이유로 메뉴를 이렇게 ENUM을 사용해서 하는 것이 효율적이지 못하다는 (?) 판단을 갑자기 해버렸다.

그 이유로 FileReader 를 통해 텍스트 형식의 파일에 메뉴를 다 담아, 컴파일 시점에 데이터를 적재하는게 좋겠다고 생각이 들었는데 , 또 갑자기 생각해보니 가독성도 너무 안좋을 뿐더러 어처피 메뉴가 추가적으로 생겨서 똑같이 컴파일 때 저장하느니, 메뉴가 생겨서 다시 실행돌려서 하느니... 똑같지 않나, 라는 생각에 ENUM 을 사용하였다.

위 사진은 ENUM 을 적용하고 난 이후 모습이다.메뉴의 종류들을 빠르게 확인할려고 Map을 사용했던 것 같다. findMenuReturTotalAmount라는 메서드를 통해 해당 메뉴가 있는지 확인 이후 매개변수로 받은 메뉴의 수량과 가격을 곱해서 값을 리턴해주는 방식으로 만들었다.

조금 더 괜찮은 방식이 있을거라고 생각하지만..생각이 뻗질 못했다......어휴

달력

다음으로 달력에서 조금 고민한 이유는 LocalDate를 사용할까 말까 라는 고민이 었다. LocalDate를 사용하면 특정 날짜를 빠르게 알 수 있는데 왜 이렇게 힘든 길을 선택하는지 모르겠지만 그냥 사용하지 않고 날짜를 계산하는 방식으로 풀었다.

2023년에 12월은 금요일부터 시작을 하기 때문에 ENUM을 사용해서 FRIDAY 부터 시작하게 위치를 첫번째로 두었다.

이후 인풋으로 부터 받은 날짜를 매개변수로 받아 (날짜 % 주)-1 을 사용하여 해당 요일을 바로 찾았다.

이후 크리스마스 할인 데이 계산도 마찬가지로
1000+(30*100)-(31-오늘날짜)*100 을 계산으로 크리스마스 할인데이 가격을 구하였다.

크리스마스 배지


배지 같은 경우에는 메서드 자체를 abstract를 두어 사용을 하였다. 총 할인 된 금액에 따른 배지를 부여해줘야하는 기능이 있었기 때문에 위와 같은 코드를 짜게되었다.

부족한 점

클래스 분리

해당 문제에서는 mvc패턴을 적용하여 문제를 풀었다. 또는 도메인을 분리할려고 많은 노력을 많이 했는데, 그러질 못했던 것 같다.

위 사진은 컨트롤러에서 담당되는 run이라는 메서드안에 있는 코드이다.

종합적으로 선택된 메뉴들의 대한 합계와 증정메뉴의 여부를 알기 위한 값인데 이 코드들 또한 자료형으로 두는것이 아닌 클래스로 따로 분리해서 관리를 했어도 되지 않았을까 라는 생각을 회고를 하면서 느꼈다....

왜 제출하기 전까지 생각이 안들다가 이제서야 생각이 드는지 모르겠다.

테스트 코드 구현속도 느림

3주차 테코톡을 볼때도 준님이 얘기하시기를.. 동작 가능한 작은 범위 부터 만든다. 라는 말을 머릿속에 못이 박도록 새겨듣고 할려하더라도 ㅋㅋㅋ잘 되지 않았다. 테스트 코드를 짜면서 각 모델에 대한 단위테스트를 할때도 계속 이게 최선의 방법인건지 몇 십분동안 고민하고 하나 되면 한 턴 쉬고, 이런식으로 하다보니 너무 시간이 아까웠다. 안하던짓을 하다 해버릇 할려하니까..생산성이 많이 낮았던 것 같다. 아니면 집중을 못하고 있다거나...너무 아쉬웠다.

개선된 점

계획성

3주차에 실수를 뼈저리게 겪고나서 테스트코드도 작성해가며 구현 하였고, 시간이 부족해서 소감문도 끝맺음도 잘 못하고...하는 부분도 있었기 때문에 4주차 시작할때 기능 하나하나 시간을 두고 개발을 하였다. 확실히 시간을 두고 하다보니, 빠르게 하루 원하는 분량은 다 채울 수 있었지만 못 다한 부분들은 하루 계획이 끝난 이후 고치며 개발해 나아갔다.

문제에 대한 흐름 이해

3주차에 많은 문제가 있었긴 했었던 것 같다...지문에 대한 이해를 꼼꼼하게 보지 않았던 것을 4주차에서는 이러한 실수를 하지 않을려고 옵시디언 마인드맵을 이용해서 문제를 파악하였다. 코드를 치기전 한번 내 생각을 적어보고 맞는지 여부를 확인해가며 작성을 하였고, 마인드맵 특성상 한눈에 볼 수 있었으며, 내 생각이 어디까지 뻗어나아갔는지 바로바로 알 수 있었다.프리코스와 프로젝트를 병행하면서 어디까지 생각이 뻗었는지 까먹을때가 있었는데..ㅋㅋㅋㅋ..이번 주차때 마인드맵을 사용하고 나니까 시간적으로 많이 줄일 수 있었다. 전보다 시간적으로 여유도 많았고 실수가 많이 줄게되었다.

4주간 느낀 점

앞으로 뭐 부터 공부해야할지 방향성이 한눈에 보이는데, 왜 인지 모르겠지만 프리코스와 별개로 따로 프로젝트도 하면서 한달을 내리 달려왔더니 번아웃이 좀 심하게 온 것 같다. 하루 이틀만 푹쉬고 여태 배운것과 느낀점을 토대로 공부를 해 나아가야겠다. 특히 프리코스를 하면서 진짜 잘하는사람이 너무 많았기 때문에 많이 부족하다라는걸 깨닫고, 제일 많이 부족한 객체지향적인 부분에 대해서 공부를 하기 위해, 프리코스 기간에 오브젝트 라는 책을 사 놓았는데 4주가 지난 지금부터 조금씩 읽고 깃허브에 정리 할 예정이다.

합격 불합격을 떠나, 정말 얻어가는것이 많았고 성장할 수 있는 기회가 되었다고 생각이 들었다. 당장의 성장을 거듭하지 못하였더라도 나의 대한 문제나, 앞으로 뭐를 해야하는지 확연히 눈에 보이고 느끼는게 있다고하면 그것 또한 성장이라고 생각이 들었다. 이런 생각을 가지게 된 것도 프리코스를 참여해서 느낀 부분..? 실제로 주마다 개선할려고 노력 하다보니 조금은 달라져있는 내 모습이 너무 보기가 좋아서 얘기를 하게 된 것 같다.
끝으로 선발 과정에 합격점에 들기위해서 나 나름대로 많은 노력을 한거에 비해 성과가 많이 불만족스럽지만 과거에 너무 연연하지말고 어제보다 더 나은 사람이 되기 위해 노력하면 언젠간 빛이 보이지 않을까..?

0개의 댓글