Skip to content
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

Open
wants to merge 23 commits into
base: chocojaem
Choose a base branch
from

Conversation

mintchocojaem
Copy link

이번 주에 어떤 작업을 했는지 설명해주세요.

각종 DTO 추가 + Redis 도입 + Refresh 토큰 추가 + 로그아웃 구현 + 회원탈퇴 구현


특히 어떤 부분을 리뷰받고 싶나요?

Exception 처리 코드에 관련된 피드백을 받고 싶습니다(효율성, 유용성 관점에서)


이번 주는 어떻게 학습했나요? 아래 질문에 짧게 답변주세요!

대부분 구글링과 각 학우들의 리포지토리를 돌아보며 효율적인 코드를 탐색했습니다.

이번 주에 학습에 투자한 시간

  • 15

학습 하면서 좋았던 점과 아쉬웠던 점

  • 점점 Spring에 대한 이해도가 높아지는 것이 느껴집니다

어려움을 겪는 부분

  • 같은 기능이지만 다양한 구현 방법이 존재합니다. 하지만 어느 것이 더 효율적이고 유용한지 판단하기에는 아직 경험과 지식이 부족한것 같습니다.

스터디 개선되었으면 하는 점

  • 녹화본이 존재하면 조금더 학습하기 수월할 것 같습니다.

Copy link
Collaborator

@won983212 won983212 left a 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을 도입하는 편입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants