-
Notifications
You must be signed in to change notification settings - Fork 1
🐛 [Fix] Flow 생성 시 participants, totalPlayTime NPE 방지 및 생성/업데이트 중복 로직 제거 #213
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
DTO에 기본값을 설정하는 건 그닥 좋지 않아보이는데 플로우 생성 시 인원 수를 어떻게 할 건지 논의해봐야할 듯 하네요 |
값이 null로 들어왔을 때 초기화하는 로직을 추가하기보다 이 방법이 깔끔하다고 생각했는데 |
관련해서 조금 찾아보니까 자바에서는 보통 DTO에서는 값만 받고 서비스 레이어에서 디폴트 값을 적용하는 방식이 일반적이더라고요! 제가 요즘 코틀린으로 개발하고 있어서 이런 부분을 깊게 생각하지 못했네요😅 |
|
늦어서 죄송합니다...! 조별 인원은 옵션으로 받을 예정이라 DB단에서부터 수정들어가야할 것 같습니다. |
현재 buildFlow 메서드에서 아래와 같이 Flow.builder()를 통해 객체를 생성하고 있습니다. => Builder에서 participants() 값을 명시적으로 설정하고 있기 때문에 엔티티에 디폴트값을 설정하더라도 request.getParticipants()값이 우선시됩니다. => 제 생각에는 FlowConverter에서 빌더 패턴으로 객체를 만드는 메서드가 buildFlow 메서드로 통일되어 있으니, 지금은 서비스 단에서 일반화하고 있는데, DTO → Entity 변환 책임은 converter단에서 처리하는게 더 적절한거 같다고 생각합니다 |
📍 PR 타입 (하나 이상 선택)
❗️ 관련 이슈 링크
Close #211
📌 개요
participants값을 지정해주지 않으면 null로 저장되어 추후 조회 로직에서 에러가 발생하는 것이었습니다.[예외 로그]
🔥[6/19 수정]🔥
대신, 실제 NPE가 발생했던 플로우 추천 로직 내에서 participants가 null일 경우를 예외 처리해주었습니다.
(+ totalPlayTime 역시 같은 문제가 발생할 수 있어 함께 null 체크를 추가했습니다.)
[이전 수정]
❗f41224dd57dd1f87e24cbfa5c1c5789c45c76de7 원래는 DTO에서 직접 기본값을 초기화했었는데, 찾아보니 자바에서는 보통 DTO는 단순히 값을 전달하는 용도로만 사용하고, 디폴트값 처리는 서비스 계층에서 수행하는 게 일반적인 패턴이라고 하더라구요.
[리팩토링]
플로우 생성(
postFlow()) 을 살펴보니 내부 로직이 길어 가독성이 떨어져, updateFlow()와 중복되는 부분을 별도의 private 메서드로 모듈화하였습니다. ed65950FlowConverter의
toFlow()와toUpdateFlow()가 거의 동일한 로직을 포함하고 있어 중복 코드를buildFlow()메서드로 분리하였습니다. 이를 통해 생성과 업데이트 시 ID 유무에 따라 구분하여 사용할 수 있도록 개선했습니다. ac610b2🔁 변경 사항
📸 스크린샷
👀 기타 더 이야기해볼 점
✅ 체크 리스트