리뷰 작성 처리를 어떻게 할까?

junhyeong·2022년 12월 21일
0

오늘 리뷰 작성 기능을 구현하던 중 하나의 고민거리가 생겼다.

리뷰 작성 여부를 어떻게 관리할까

먼저 내가 설계한 리뷰에 대해 간단히 설명하자면
주문할 때마다, 그리고 주문한 상품의 옵션마다 해당상품에 대한 리뷰를 작성하게 하는것이다.

예를들어 가디건이라는 아이템을 s사이즈 옵션과, m사이즈 옵션으로 1개씩 주문한다면 가디건이라는 상품에 총 2개의 리뷰를 달 수 있는 것이다.

오전동안 생각해본 결과 일단 2가지 방법을 생각해낼 수 있었다.

1. 주문 아이디, 상품 아이디, 옵션아이디, 유저 아이디가 모두 일치하는 리뷰가 존재하는지 확인한다

내가 생각한대로 리뷰를 작성하려면 주문 아이디, 상품아이디, 옵션 아이디, 유저 아이디가 모두 일치한다면 리뷰를 작성할 수 없도록 처리해야한다

이전에 노아님이 판매수 통계를 상품이 갖고있는것이 아니라 계산해서 넣어줘야한다는 말을해주셨는데 그걸 생각해도 이게 맞았다.

그런데 상태를 가지고 있지 않으면 프론트에서 상태를 어떻게 다르게 보여주지? (예를들어 작성완료 상태면 리뷰 보기, 미작성상태면 작성하기 버튼이 보이도록)

그리고 이게 왜 맞는거지? 이 부분은 뒤에서 말해보려고 한다.

2. order 주문 안의 주문한 상품들(order products)들을 값객체에서 엔티티로 변경한다.

먼저 주문 상품들을 값객체로 만든 이유는 주문 번호가 모두 같아야 하고 상태를 변경할 일이 없었기 때문이다.

그런데 여기서 주문 상품에 리뷰 작성 여부를 넣어주고 엔티티로 바꿔주면 1번 방법보다 간단하게 처리할 수 있다.

하지만 단지 상태를 넣어주려고 엔티티로 바꾼다는건 이상한 것 같기도 하다

어떤 방법이 맞는걸까?

일단 혼자 고민해봐도 답이 안나와서 동료분들께 조언을 구해봤다. 하지만 그래도 해결이 안되서 노아님께 조언을 구해 답을 찾을 수 있었다.

상태값을 가지고 있는게 아니라 로직을 이용해서 구하는게 맞다.

일단 정답은 1번이었다.(로직을 이용한 방법) 계산해서 구할 수 있는것들을 굳이 상태값으로 가지고 있을 필요가 없는 것이다.

그런데 나도 앞서 말했듯 이 방법이 맞다고 생각해서 납득을 했지만 왜 2번도 가능한데 1번이 맞는지를 남들에게 말할 수 있을정도로 이해하지 못했다.

왜 1번이지?

아무리 생각해도 답을 모르겠다. 둘다 가능한데 왜 1번이지?

답은 간단했다. 앞에서 말했던대로 굳이 상태값을 가지고 있지 않아도 처리할 수 있기 때문이다. 즉, 상태값을 꼭 가지고 있어야하는 이유가 없기 때문에 로직으로 처리하는 것이다. (물론 상태값이 필요한 이유가 있다면 가지고 있어도 된다)

그럼 화면(프론트엔드)에서는 어떻게 처리하지?

사실 내가 1번, 2번을 고민하게 한 이유중에 제일 큰 영향을 끼친게 이 부분이었다. 상태값이 없는데 어떻게 화면에서 다르게 보여줄지를 모르겠는 것이다.

그런데 내가 생각못했던게 있었다. 바로 dto에서 로직을 이용해 상태값을 추가해주면 되는 것이다. dto에 상태값을 넣어주면 model이 상태값을 가지고 있지않아도 화면에서 다르게 처리해줄 수 있었다.


불확실한 부분은 더 쪼개기

오늘 리뷰 작성에 대해서는 고민하던 부분을 모두 해결했지만 생각보다 시간이 오래걸렸다. 처음에는 엄청 어려워보이지 않아도 막상 기능을 만들면 디테일한 부분들이 보이기 시작하고 복잡해졌기 때문이다.

오늘 많은걸 고민하고 배웠지만 결과적으로 계획표만 보면 아무것도 한게 없는 상태였다.

그래서 그런지 멘탈에도 영향이 갔다. 몇일 전에 홀맨님 말씀을 듣고 작업단위를 조금은 더 작게 쪼겠다고 생각했는데 부족했던 것 같다.
다음부터는 불확실한 부분은 더 작게 쪼개는걸로!

profile
매일매일이 성장하는 하루가 될 수 있도록!

0개의 댓글

관련 채용 정보