우아한 프리코스 4주차 리뷰

chrkb1569·2023년 11월 25일
0

우아한 프리코스 마지막 미션인 4주차의 리뷰입니다.
기존 1,2,3 주차 미션의 경우에는 요구 사항을 보고 나서 번거롭다는 생각을 해본적이 없었는데, 4주차 미션은 요구 사항을 보자마자 '이거 어떻게 구현하지...?'라는 생각이 먼저 들었습니다.

4주차 과제

사용자로부터 방문 일자, 주문할 메뉴를 입력할 경우, 사용자가 받을 수 있는 혜택들을 정리하여 사용자에게 출력하는 프로그램이었습니다.

4주차에서 고려했던 사항은 다음과 같습니다.

  • 사용자로부터 입력 받은 날짜를 어떻게 요일로 변경할 것인가?
  • 메뉴 정보 어떻게 관리할 것인가?
  • 할인 혜택 관리는 어떻게 수행할 것인가?
  • 입력되는 메뉴 형식은 어떻게 유효성을 판단할 것인가?
  • 클래스 별 역할은 어떻게 나눌 것인가?

아무래도 요구 사항이 복잡하다보니, 생각할 게 좀 많긴 했습니다.
특히 메뉴 정보와 할인 정보는 정해져있는 사항이기 때문에 어떻게 구현할지에 대해서 많이 고민했습니다.
이걸 미리 객체에 저장해 둔 상황에서 프로그램을 실행하면 결론적으로 수많은 객체들 중 1개만 사용되기 때문에 메모리적으로 비효율적이라는 생각이 들어 Enum 클래스를 사용하였습니다.
확실히 Enum 클래스에 익숙해지니 이러한 정보들을 관리하기에는 매우 유용한 것 같습니다.

나는?

https://github.com/chrkb1569/java-christmas-6-chrkb1569

노력했던 점

클래스 역할 분리

이 부분은 항상 부족한 것 같습니다.
3주차에서는 프로그램이 하나의 객체에 종속됨으로 인하여 프로그램 로직을 실행하거나 결과를 출력할 때 모두 Game 이라는 객체를 매개변수로 전달해야했던 문제를 겪었습니다. 4주차에서는 이러한 문제를 겪지 않도록 클래스 역할 분리에 노력을 기울였습니다.

Enum Class 활용


이번 프리코스에서 가장 많이 활용한게 무엇이냐고 묻는다면, 저는 Enum 클래스를 대답할 것입니다.
메뉴처럼 미리 정해진 정보를 구현하기 위해서 Enum 클래스를 사용하였고, 각 메뉴가 어떠한 타입에 속하는지 또한 Enum 클래스를 통하여 구현하였습니다.

별도의 method를 통하여 원하는 정보만을 추출할 수 있고, 가독성이 좋다는 장점이 있어 활용하였습니다.

배웠던 점

@ParameterizedTest

테스트 환경에서 다양한 매개변수로 테스트 하기 위한 어노테이션입니다.

다음처럼 하나의 테스트 코드를 통하여 여러 매개변수를 테스트할 수 있는데,
이 부분은 어떻게 활용할 수 있는지 정리해서 별도의 글로 다시 올리겠습니다.

부족하다고 생각되는 점

코드 확장성

프로그램 요구 사항에서는 구매 금액이 특정 금액을 초과하였을 경우, 샴페인을 증정한다고 명시되어있습니다.
그래서 저는 다음처럼 '증점품이 샴페인만 존재하는 경우'를 가정하여 코드를 작성하였습니다.

보시면 증정품 이름을 샴페인으로, 증정품 가격 또한 샴페인 가격인 25000원을 변수로 지정한 모습을 확인할 수 있습니다.
나중에 다른 분들이 구현하신 코드들을 보니, 제가 이러한 부분을 고려하지 못했다는 것을 깨달았습니다.

마치며

솔직히 처음에는 4주동안 간단하게 프로그램을 구현하는 과정이라고 생각하였습니다. 그러나, 프리코스를 진행하면서 배우는 점도 많았고, 아직 기본기가 많이 부족함을 몸소 깨닫는 시간이었습니다. Enum 클래스 활용, 예외 처리, 정규식 활용, MVC 패턴, 일급 컬렉션 활용 등 여러 기본기들과 더불어 어떻게 프로그램을 디자인 할 것인가에 대하여 고민해보고, 다른 사람들과 이야기를 나누어 볼 수 있었던 좋은 경험이었습니다.

0개의 댓글