[우아한 테크코스 프리코스] 4주차 회고

박세진·2023년 11월 19일
0

드디어 우아한 테크코스 프리코스가 끝이 났다. 재밌었고 너무 아쉽다.
4주차 과제는 크리스마스 이벤트 프로모션에 관한 내용이었다. 이메일 형식의 기능 요구 사항으로 내용을 통해 스스로 판단하고 유추하여 기능을 구현하는 것이었다.

4주차 과제에는 클래스(객체)를 분리하는데 조금 더 깊이 고민해 볼 수 있도록 클래스 예시와 요구사항이 추가되었다. InputView, OutputView 객체를 활용해서 구현하도록 파일이 만들어져 있는 상태였다. 클래스의 역할과 책임을 생각해보고 클래스 작성시 도메인 로직에 집중하는 방향으로 구현하고, UI는 도메인 로직과 분리하는 방향으로 생각하는 게 4주차에서 집중해야 될 부분이었다.

index.js
App.js
Promotion.js
DecemberPromotion.js
ReservationMenu.js
ReservationMenuItem.js
ReservationDate.js
InputView.js
OutputView.js
Constant.js

이렇게 클래스의 역할과 책임을 분리해 보았다.
App에서는 Promotion 클래스에 있는 execute 함수를 호출하였고, Promotion 클래스 내부에는 execute 메서드, 날짜와 메뉴를 입력받아서 try catch 구문을 통해 에러를 잡고 다시 입력받아 값을 반환하는 메서드를 만들었다. 그리고 DecemberPromotion 클래스를 만들어서 12월에 진행되는 프로모션들을 메서드로 만들었다. ReservationMenu에는 입력값을 검사하여 예외를 발생시키는 유효성 검사 메서드들과 메뉴와 숫자를 분리하여 인스턴스에 전달하는 메서드를 관리하도록 하였다. ReservationMenuItem 클래스에서는 메뉴와 숫자의 유효성 검사, 메뉴 가격을 계산하는 메서드와 전달받은 카테고리에 따라 할인값을 계산하는 메서드를 만들었다. 이런식으로 클래스의 역할과 책임을 분리해보고, 상수는 Constant 파일을 이용하여 관리하였다.

아직 클래스의 역할과 책임을 분리하는데 더 연습이 필요하다는 생각이 들었다. 유효성 검사하는 걸 나눴으면 더 역할과 책임이 분리가 되었을까 생각이 들기도 하면서... 어떻게 보면 유효성 검사도 이 클래스의 역할이라고 생각이 들기도 하면서 참 어렵다. 그리고 execute 함수의 경우 함수를 호출해서 값을 전달하여 DecemberPromotion 인스턴스를 생성하고, OutputView 함수를 호출하는 호출문이 많아서 15라인이 훌쩍 넘었는데 이런 부분은 어떻게 리팩토링을 해줘야 좋을런지 모르겠다. 이런 부분이 어렵지만 해내야 되는 거겠지.

이번 과제는 정말 재밌었다. 처음에는 클래스 분리하는데 머리도 아팠고 이렇게 분리하는게 맞는가 생각도 들고 잘하지 못한다는 생각에 조금 힘들었다. 그래도 테스트 코드에서 통과했을 때 정말 행복하다. 재밌고 즐거운 4주였다!!!

profile
경험한 것을 기록

0개의 댓글