티스토리 뷰

넘블챌린지의 1주차 미션이 끝나가고 있다.

이번주 미션은 로그인을 위해 필요한 Data Fetching 모듈을 만드는 미션이었다.

 

💻 과제

가이드에 따르면 이번 미션의 포인트는 아래 두가지 이다.

  1. 주어진 AuthService 와 UserService 의 공통부분을 추상화하여 부모 클래스로 추출하고 리팩터링
  2. react-query에 의존성 역전 원칙을 적용하기 위해 useRequest라는 API request를 보내주는 모듈구현

 

🤔 고민한 부분

미션을 진행하면서 가장 크게 고민했던 부분은 어떻게 하면 최대한 OOP스럽게 코드를 작성할수 있을까 였다.

그러다 보니 Service단을 리팩터링 하는 작업을 가장 오래 진행했었다.

Class가 익숙하지도 않아 어떤 기능이 공통적인 기능이고 어떤기능을 추출해서 부모클래스로 올려야 할지 막막했었다.

그래서 리팩터링2관 이라는 책을 찾아보면서 어떻게 구현하면 좋을지에 대한 고민을 많이 했던거같다.

 

💡 해결방법

ApiClient

TokenProvider

useRequest

  • 사실 이부분은 주어진 문제와는 조금 다른 방식으로 풀어나갔다.. 보통 react-query를 사용할때 훅을 사용하여 요청마다 매칭되는 여러 훅들을 만들어 폴더구조로 정리하는것이 더 깔끔해 보인다고 생각해서 useMe나 useUser같은 훅들을 구현하였다.(더 좋은 방법이 있을수도 있다..) queryKey는 확장성과 재사용성을 증대시키기 위해 따로 Object로 관리하여 import로 불러와 사용하는 방식으로 구현하였다.
  • https://github.com/hgs0529/numble_challenge_1/tree/main/src/hooks

 

🙋 마치며

예상했던거와는 다르게 기본적인 로직이 구현되어있는 인터페이스가 주어지고 해당 로직들을 리팩터링하고 개선하는 미션이어서 어려움을 겪었다.. 평소에 클래스를 잘 사용하지도 않았고 객체지향의 이해도도 굉장히 떨어졌었다.

이번 미션을 수행하면서 사놓고 안보고있던 리팩터링2 책도 읽으면서 객체지향과 코드 품질에 대해 깊게 고민해보는 시간을 가질수 있어서 좋았다. (역시 발등에 불이 떨어져야 더 열심히 하게된다..)

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday