오늘은 과제리뷰와 타입스크립트에 대해서 강의를 해주셨다.

타입 스크립트는 꽤 전부터 사용하고 있었지만 어떻게 사용해야 잘 사용하는 것인가에 대해 코드도 많이 찾아보고 자료도 찾아봤지만 현직자가 직접 강의 해주는 것이 훨씬 이해하기 좋았다. (블로그엔 내용이 너무 천차만별... 강의보는 것이 좋긴하다...)

 

📝 강의 내용

타입스크립트란 무엇인가?

타입스크립트는 자바스크립트에 타입 문법을 추가해서 만든 슈퍼셋이다. 슈퍼셋은 기존 자바스크립트에다가 추가적인 기능을 추가했다는 의미이다.

타입스크립트는 자바스크립트와 달리 브라우저에서 실행하려면 파일을 변환해주어야 한다. 이과정을 컴파일이라고 한다.

 

타입스크립트를 왜 써야하는가?

자바스크립트 코드의 품질과 개발 생산선을 높일 수 있다.

프로젝트를 실행하기 전에 에러를 사전에 방지할 수 있으며 코드 가이드 및 자동 완성 기능을 사용할 수 있다.

 

 

 

오늘은 지난 주에 커리어 챌린지 특강을 들었기 때문에 과제가 없어서 과제리뷰는 하지 않고 바로 강의를 진행하셨다.

강의 내용은 관심사의 분리와 SRP, Custom Hook, 횡단관심사, 의존성에 대해서 강의해주셨다.

관심사 분리는 부트캠프당시 디자인 패턴에 대해 알아보던중 스터디원 분이 알려주셔서 어느정도 알고는 있었지만 자세히는 모를 수 있다고 생각하여 집중해서 들었다.

Custom Hook도 학습도 했었고, 실제 사용도 몇번 해봤지만 이게 맞는가에 대한 의구심이 많이 있었는데 해당 강의를 통해 해결 할 수 있었다.

 

📝 강의 내용

관심사 분리

관심사는 하나의 모듈이 수행하고자 하는 목적이다. 관심사의 분리는 각 모듈들이 한번에 여러 관심사를 처리하려고 하지 않고, 하나의 관심사만 처리하도록 분리하는 것을 말한다고 한다. 

관심사를 분리하게 되면 하나의 모듈은 하나의 목적만을 가지게 되며 코드가 수정될 이유는 한가지만 존재하게 되어 유지보수가 쉬워지기 때문에 관심사를 분리하는 것이 좋다.

 

Custom Hook

커스텀 훅은 기본적으로 제공되는 리액트의 훅들을 이용해서 만든 함수다. 로직은 UI를 변경시키기 위해 구성되며 useState, useEffect 등의 훅을 사용해서 구현한것이 커스텀 훅이고, 훅을 사용하지 않은 것은 커스텀 훅이라고 말할 수 없다고 한다.

커스텀 훅의 두가지 규칙으로는 React Hook을 호출하는 함수여야 하며, 함수의 이름은 use모듈명으로 작성해야한다.

 

횡단 관심사

여러 서비스에 걸쳐서 동작해야 하는 코드를 의미한다. 여러 핵심 비지니스 로직들에 걸쳐서 실행되어야 하는 동작들을 의미한다.

ex) 인증 & 인가, 로깅, 트랜잭션 처리, 에러처리 등

 

 

📌 과제리뷰

지난번 과제인 Todo List 프로젝트에 대한 리뷰를 해주셨다. 총 12팀에 대한 코드를 보시고 좋지 않는 코드들을 가져와서 리뷰해주시기 때문에 전체 팀에 대한 피드백이라고 한다.

피드백 내용

  • 불필요 파일들 삭제
  • 사용하지 않는 변수, import 제거
  • 상수화를 활용한 가독성, 유지보수성 향상
    // 상수화X
    type RegisterMode = 'signUp' | 'signIn';
    
    const [mode, setMode] = useState<RegisterMode>('sign_in');
    
    
    // 상수화O
    const SIGN_IN = "SIGN_IN";
    const SIGN_UP = "SIGN_UP";
    
    type RegisterMode = typeof SIGN_IN | typeof SIGN_UP
    
    const [mode, setMode] = useState<RegisterMode>(SIGN_IN);
  • 삼항연산자와 조건문의 차이 파악해서 상황에 맞게 사용하기
    • 값이 필요할 때는 삼항연산자를 사용한다.
    • 코드의 분기가 필요할 때는 조건문을 사용한다.
  • 변수명은 어떤 데이터를 가지고 있는지 어떤 동작을 하는지 명확하게 작성하는 것이 좋다.
    • ex) 데이터를 가지고 있는 변수를 모두 data라고 하는 것보다는 userData, postData와 같은 변수명을 써서 어떤 데이터가 있는지 알 수 있도록 하는 것이 좋다.
  • state의 최소 집합을 찾는것이 좋다.
     

    React로 사고하기 – React

    A JavaScript library for building user interfaces

    ko.reactjs.org

  • async - await 동작 이해하고 사용하기
    • async return → Promise
    • await → Promise resolve or reject
    • 무의미한 catch 활용 줄이기
    • 무의미한 async await 활용 줄이기
  • 다른 문맥끼리는 공백으로 구분하기, 일관성 있는 포맷팅
  • 코드 작성 순서
    • css-in-js 스타일링 방법을 사용할 때 스타일링 코드를 위에 작성하는 것보다는 로직과 렌더링 되는 코드 밑에 작성하는 방법으로 작성하는 것이 좋다. 
  • 스타일링 방식 혼용 지양
    • 스타일링을 할 때 한가지 방법만 사용하여 작성하는 것이 유지보수하기 편하다.

 

📝 라이브 세션 내용

첫 시간에는 렌더링을 최적화하는 방법과 react.memo, useMemo, useCallback을 사용하는 방법과 왜 사용해야 하는지에 대해서 설명해주셨다. 항상 최적화를 한다고 하지만 메모이제이션 방식을 사용해서 최적화를 해본적은 손에 꼽는 것 같다.

전에 인프런 답사를 다녀왔을 때 들었던 내용이 있기 때문에 사용하는 것을 최소화 하려고 했었기 때문도 있다. 너무 이른 최적화는 좋지 않고 useMemo, useCallback을 사용했을 경우 코드의 가독성이 좋지 않기 때문에 잘 사용하지 않는다고 했던 내용이 머리에 자리잡았기 때문인 것 같다. 하지만, 정확하게 최적화를 할 수 있을 경우에는 사용한다는 것도 있어서 최적화를 언제 적용해야 하는지에 대한 부분에 고민을 많이 해봐야 할 것 같다.

또한, 강의 내용에서도 마지막에 최적화는 꽁짜가 아니고 최적화를 해야 하는 시기나 명확하게 가치를 창출해낼 수 있는 것이라고 생각 됐을 때 최적화를 하면 된다고 말해주셨다.

 

두번째 시간에는 useEffect, ContextAPI를 조금 더 잘 사용할 수 있는 방법에 대해서 설명해주셨다.

useEffect에 의존성 배열을 잘 설정하는 방법은 모든 의존성을 빼먹지 말고 의존석 배열에 명시하지만 가능하다면 의존성을 적게 만드는 것이 좋다고 한다.

원티드 프론트엔드 인턴십을 진행중에 커리어 챌린지도 들어야 하는 2주차였고, 화요일, 수요일 총 이틀을 진행했다.

 

👀 커리어 챌린지 현직자 QnA (22.12.27(화))

큰 파트로 2개정도 말씀해주셨다. 이력서를 작성하기 전에 알아야 할 것과 취업준비를 하면서 공부하는 방법에 대해서 설명해주셨다.

 

이력서를 작성하기전에는 나의 장점이 무엇인지를 정확하게 파악하고 작성하는 것이 중요하다고 했다. 그래야 면접에 갔을 때도 나에대해 숨김없이 잘 나타낼 수 있다고 했다. 

 

취준하면서 공부하는 방법에는 온라인 강의, 개발 서적, 사이드 프로젝트 등 많은 방법이 있지만 혼자진행하는 것보다는 같이 진행하는 것이 좋다고 하셨다. 이유는 혼자 하게되면 잘하고 있는지도 잘 모를 뿐더러 결국 현업에 가게 된다면 협업을 진행해야 하는데 그러한 경험이 없다면 취업을 하더라도 해매기 때문이라고 한다. 또한, 혼자서 공부를 하게 되면 번아웃도 쉽게 올 수 있다고 했다.

 

그리고 어느것을 공부해야하나요에 대한 질문에 답변도 해주셨는데 결국 개발자는 모든것을 다 공부해야하니 다 해보는 것이 좋다고 한다....

 

📝 커리어 챌린지 이력서 코칭(22.12.28(수))

이력서를 작성할 때 중요사항과 이력서를 제출할 때 해야할 것에 대해서 설명해주셨다.

이력서 관련 특강은 많이 들었지만 조금 더(?) 어떤 이력서가 통과하고 통과된 이력서 중에서 어떤 단어가 많이 작성되어 있는지 통계를 보여주었고 빼야 할 내용과 넣을 내용에 대해서 알려주셨다.

 

📗 오늘 한 일

HackerRank 코딩테스트 진행 (13:20 ~ 17:20)

  • 코딩테스트 진행 (240분 / 5문제)

원티드 프리온보딩 커리어 챌린지 이력서 부분 (20:00 ~ 21:50)

  • 이력서 작성시 중요사항
  • 이력서를 제출할 때 해야할 것

MERN 스택을 활용한 게임 커뮤니티 사이트 구현

  • NodeJS, mongoDB, Express, React, Firebase 사용
  • React 기초 세팅

✍ Diary

코딩테스트는 나름 조금만 열심히 했다면 풀 수 있는 문제가 4문제 였고, 프로그래머스 기준 2~3단계 수준에 해당하는 BFS 문제가 나왔는데 BFS 문제는 아직 JS로 풀기에는 어려움이 있었다.

게임 커뮤니티 사이트를 혼자 MERN 스택으로 개발하게 된 이유는 프론트엔드 개발자가 가장 쉽게 풀 스택으로 혼자만의 사이트를 구현하는데 다른 언어를 배우지 않고 프레임워크를 사용하고 간단한 DB 구조를 만들 수 있다면 프로젝트를 할 수 있기 때문에 시작하게 됐다.

23년 1월 첫 사이드 프로젝트로 완성을 목표로 두고 있다.

 

mongoDB와 Express에 대한내용도 블로그에 작성해야겠다.

 

'Daily > Today I Learned' 카테고리의 다른 글

22.12.27_TIL  (0) 2022.12.27
22.12.26_TIL  (0) 2022.12.26
22.12.24_TIL  (0) 2022.12.24
22.12.23_TIL  (0) 2022.12.23
22.12.22_TIL  (0) 2022.12.23

📗 오늘 한 일

프로그래머스 스킬체크 1단계 합격

  • 항상 봐볼까 하다가 이번에 처음 봤는데 어렵지 않았다. 상세한 내용은 올릴 수 없어서 합격 화면만 올려본다.
  • 다음엔 2단계를 해봐야겠다.

HackerRank 문제풀이 (15문제)

  • 원티드 서류 합격에 따른 코딩 테스트 준비
  • HackerRank는 처음이었는데 다 영어로 작성되어 있지만 나름 해석해서 풀만했다.
  • 프로그래머스, 백준, 리트코드에서 풀었던과는 조금 다른형식으로 진행된다.
  • 나에게 넘어오는 코드가 어떤 식으로 input이 전달되는지 알 수 있었고, 제출시 return이 아닌 process.stdout.write()와 같은 형식으로 제출을 해야하는 경우도 있었다.
  • GCD(유클리드호제법), LCM, DP, 경우의 수(중복, 수열), DFS, BFS, 다익스트라를 복습했다.

원티드 프리온보딩 커리어 챌린지 현직자 QnA

  • 이력서를 작성하기 전에 알아야 할 것
  • 취준하면서 공부하는 방법

✍ Diary

해볼까 했던 프로그래머스 스킬체크를 1단계진행 했는데 어렵지 않았다. 다음엔 2단계와 PCCP를 진행해봐야겠다. PCCP는 프로그래머스에서 나온 코딩테스트 자격증(?)의 개념인데 나름 우대사항에 적혀있는 곳도 있어서 해봐야겠다.

이력서 통과를 해서 HackerRank에서 진행해야 한다해서 처음 해보기 때문에 연습을 했다.코테 보기전에 관련 내용을 단기적으로 할 때 루틴이 있는데 해야겠다.

 

원티드 커리어 챌린지 현직자 QnA 세션을 들었는데 거의 현직자 QnA는 다 비슷한 것 같다. 자기계발과 스터디, 사이드 프로젝트 등등 이다.

'Daily > Today I Learned' 카테고리의 다른 글

22.12.28_TIL  (0) 2022.12.29
22.12.26_TIL  (0) 2022.12.26
22.12.24_TIL  (0) 2022.12.24
22.12.23_TIL  (0) 2022.12.23
22.12.22_TIL  (0) 2022.12.23

+ Recent posts