NUMBLE - 가장 실무에 가까운 쿠팡 클론코딩 1회차 회고

jkpark104·2022년 6월 29일
1
post-thumbnail

Intro

약 6주에 걸친 넘블의 쿠팡 클론 프로젝트에 참여했습니다.

  • 1회차 과제는 다음과 같습니다.
    1회차 과제
  • 평가 기준
    심사기준

AuthService 리팩토링

첫 번째 요구사항은 구현된 AuthService의 리팩토링이었습니다.

  • 구체적 요구사항
    AuthService 요구사항

  • base.service.ts
    리팩토링을 진행하면서 우선한 코드의 개선 사항은 2가지였습니다.

    1. 코드의 중복 제거 (재사용성)
    2. 코드의 확장성

    이를 위해 base.service.ts라는 추상 클래스를 구현했습니다. 또한, 중복되는 타입을 단일화했습니다.

    • base.service.ts는 추가될 서비스의 부모 클래스로 axios를 통해 리소스를 요청하는 메서드의 집합입니다.
    • 제너릭으로 런타임에 타입을 결정할 수 있도록 해 재사용성을 높이려 했습니다.

    base.service.ts
    base.servise.ts

useRequest 구현

  • 구체적 요구사항
    useRequest

  • useRequest.ts

    두 번째 요구사항은 의존성 역전 원칙을 적용한 useRequest 커스텀 훅 구현입니다.

    의존성 역전 원칙 : 상위 계층이 하위 계층에 의존하는 전통적인 의존관계를 역전시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. (위키백과)

    이를 위해 get 요청을 하는 useRequestGet 함수와 post 요청을 하는 useRequestPost 함수를 구현했습니다. 이 함수들은 pages/index.tsx 내부에서 동작하던 API request 로직을 모듈화하고 추상화함으로써 의존성을 제거할 수 있게 했습니다.

    • useRequestGet.ts
      useRequestGet.ts
    • useRequestPost.ts
      useRequestPost.ts

Outro

  • 의존성 역전 원칙, 타입스크립트 활용, 객체 지향 사고 등 아직은 어려운 개념들이 많고 이것들을 실제 코드에 적용하는 것에 많은 고민이 있었습니다. 남은 5주간의 프로젝트를 열심히 수행하여 위와 같은 고민을 많이 해결할 수 있는 프로젝트가 됐으면 좋겠습니다. 😃

0개의 댓글