-
Notifications
You must be signed in to change notification settings - Fork 22
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
[3주차 과제] 이재민 #47
base: chocojaem
Are you sure you want to change the base?
[3주차 과제] 이재민 #47
Conversation
기능은 구현 했으나 전반적으로 패키지 및 구조를 개편할 예정
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
전반적으로 잘 구성하신 것 같습니다. 에러 핸들링에 관해서는 몇 가지 피드백을 드리겠습니다.
국제화 기능을 사용해보시면 좋을 것 같아요.
에러 메시지를 코드에 하드코딩하지 않고 외부 메시지 파일로 빼면 좋을 것 같습니다. Spring에서는 국제화 기능(i18n)을 제공하는데 비교적 쉽게 사용하실 수 있습니다.
ErrorCode대신 개별 Exception들로 분리해보는 것은 어떨까요?
개별 Exception들은 모두 공통 Exception(구현하신 CustomException같은)을 상속받습니다. 이렇게 Enum대신 개별 Exception으로 사용했을 때의 장점이 있습니다.
- message별로 원하는 argument만을 받아 message에 포함시킬 수 있다. ErrorCode를 사용해서 이 기능을 구현하려면 공통 exception에 Object[]를 받아야 한다.
- 상속 관계를 표현할 수 있고, 이로 인해 유연한 에러 처리가 가능하다. (그룹화해서 처리도 가능하다)
- 국제화가 포함된 Exception handling 기능을 더 간결하게 구현할 수 있다.
- 더 명확한 에러 처리가 가능하다. 예시는 아래
// enum 방식
throw new CustomException(ErrorCode.USER_NOT_FOUND);
// enum + argument. 생성자로 params 등의 Object[]를 받아야 함.
throw new CustomException(ErrorCode.USER_NOT_FOUND, "username");
// 개별 exception 방식
throw new UserNotFoundException();
// 개별 exception + argument. 생성자로 쉽게 인자 유추 가능
throw new UserNotFoundException("username");
물론 Enum을 사용했을 때의 장점도 있습니다.
- 비교적 쉽게 구현할 수 있다.
- Exception Class들이 필요 없으므로 더 적은 클래스로 구현할 수 있다.
이 부분은 취향이라고 생각합니다. 개인적으로는 개별 Exception을 도입하는 편입니다.
이번 주에 어떤 작업을 했는지 설명해주세요.
각종 DTO 추가 + Redis 도입 + Refresh 토큰 추가 + 로그아웃 구현 + 회원탈퇴 구현
특히 어떤 부분을 리뷰받고 싶나요?
Exception 처리 코드에 관련된 피드백을 받고 싶습니다(효율성, 유용성 관점에서)
이번 주는 어떻게 학습했나요? 아래 질문에 짧게 답변주세요!
대부분 구글링과 각 학우들의 리포지토리를 돌아보며 효율적인 코드를 탐색했습니다.
이번 주에 학습에 투자한 시간
학습 하면서 좋았던 점과 아쉬웠던 점
어려움을 겪는 부분
스터디 개선되었으면 하는 점