Skip to content

4주차 멘토링

J219_홍종우 edited this page Nov 16, 2021 · 1 revision

2021-11-16

  • 참여자
    • J077_문혜현, J107_송명회, J218_홍승용, J219_홍종우, 성지현 멘토님
  • 시간
    • 19:30 ~ 20:30

멘토님 문의 드릴 사항

  • API에서 정보를 줄 때 필요한 정보만 주는 게 좋은가요, 아니면 사용될지 모를 정보들을 포함해서 주는 게 좋을까?

    • 필요한 정보만 반환하도록 하는 것이 기본적으로 맞음
    • 추가 fetch 또는 DB query가 필요하다면 그때 사용되는 정보도 "필요한 정보"
    • 회원가입 상황에서는 code, center 다 반환해주는 게 좋을 것 같다.
    • 서버의 성능을 최소한으로 할 수 있도록 UI에서 무조건 보여주는 데이터가 아니더라도 한 번에 반환하도록 하는 것이 좋음
  • typescript에서 타입을 지정하는 것은 최소 어느 단위로 해주는 게 좋을까요? interface Code {code: string} 이런 단위도 만들어 주어야 하나요?

    • 확장할만한 데이터가 많으면 interface로 묶으면 되는데 그럴 필요가 없는 경우에는 직접 code에서 명시를 하는 것이 좋음
    • 프로퍼티 하나짜리 인터페이스 -> 왜 객체로 쓰는가?
  • declare global 써도 되나요?

    • 써본 적 없으심. 굳이 사용할 필요 없다는 의견.
    • NPM module은 library로 만들면서 d.ts 파일을 별도로 build 하도록 만드는 방식이라서 @types 처럼 사용할 수 있음. 개발 시에는 굳이 declare 사용하지 않아도 될 것.
  • type을 declare module, namespace 방식과 export interface 하는 방식. 어떤 상황에서 어떻게 적절한지 조언을 듣고 싶습니다.

    • export, import 해서 쓰세요
  • client, authController에서 error가 fetch 자체에서 에러가 발생했을 때, console.log를 찍는지, 아니면 그냥 두는지 궁금합니다.

    • 빌드 옵션으로 console.log 지울수 있다
    • 프로덕션 빌드에서는 당연히 console.log를 지우는 게 맞다. (테스트, 개발시만 사용)
  • 인수 하나는 꼭 필요하지만 그 외의 인수는 optional하게 주고 싶습니다. 이 때, closure를 생각해 봤는데, 다른 방식도 있다면 알고 싶습니다. (currying)

    • Interface를 하나 만들어서 해당 type을 optional로 설정하는 것이 좋음
    • 객체를 any로 받고 처리를 하는 방법도 좋음(Parameter 말고)
  • 라우트 핸들러, 컨트롤러, service

    • routes - controllers - services
    • (req, res) => ... 라우트 핸들러를 controllers/로 분리하기도 한다.
    • 서비스는 (req, res)에 의존하지 않는 게 맞긴 함
  • 에러 상황

    • 상황에 맞는 에러 객체를 따로 정의하고, next(err)로 넘겨주는 게 좋다.
      • expressLoader.ts에서 에러 핸들러를 정의해서 한 번에 처리
      • 컨트롤러 코드에서 에러는 throw 해버리면 됨
  • 폴리곤 성능

    • 그냥 서버 메모리에 Map으로 올려놓으면 되지 않을까? (매번 DB에서 불러오지 않고)
    • 20MB 정도이므로 서버 상 메모리에서 들고 있어도 큰 문제가 없음
    • 성능 개선과 수치를 표기해서 사용하면 보기 좋음(도움됨)
      • 개선 과정을 잘 정리해보자!
  • JWT 이슈 관련

    • JWT는 보안적인 이슈가 될 수 있고(탈취), 그에 대한 처리가 필요
    • Token 만료 시, Refresh Token을 통해 만료에 대한 처리를 해줄 필요가 있음
    • token의 만료 시간을 짧게 하고, refresh token의 시간을 길게 잡는 것이 하나의 보안적 대안
  • React 렌더링 성능 최적화

    • Hooks 나오기 전에는 class Component 라이프사이클 메서드로 최적화를 했는데..
    • Hooks 이후에는 useCallback, useMemo
    • 우려되는 부분: 자동완성(검색)
      • 한 타 칠때마다 렌더링 되는데 혹여나 다른 컴포넌트가 렌더링될 수 있다. 체크해볼것
      • debouncing 하면 됨 (주로 자동완성기능은 이렇게 처리)
  • 새로운 기능 vs ...

    • 단순히 "어떤 기술을 사용해보았다" 보다는 "어떤 고민이 있었고 어떻게 해결했다"는 서사가 더 좋다
    • 성능 최적화, 완성도에 집중하는 게 나아보인다
    • 서버에서 렌더링을 최적화하는 방식도 있다
Clone this wiki locally