-
[프리온보딩코스 세션 회고 #2] React Foundation과 첫 번째 과제 리뷰🏄♀️ 원티드X위코드 프리온보딩코스 2021. 8. 2. 00:53
7/29 (목) [React Foundation]
세션 내용
- React: CRA 폴더 구조, 컴포넌트 설계 및 분리, state, props, map 등의 이해
- 함수의 재사용, utils성 함수 만들기
- mock data 설계와 분리
1. CRA 폴더 구조 설계 Tips
- 폴더구조에 대한 정답은 없음! 오로지 써보고 느껴보는 것이 중요하다!
- 써보면서 나만의 스타일을 구축해야 한다. 하지만 그러려면 다른 사람의 코드를 많이 봐야 함! (역시 레퍼런스를 많이 보는 것이 중요! )
- 가장 좋은 것: 오픈 소스나 유명한 스타트업이 공개하는 레포지토리를 참고하면서 최대한 다양한 폴더 구조를 써보고 자신에게 잘 맞는 폴더구조를 찾아보기!
- 여기서 제일 중요한 건, 내 것만을 고수하지 않기! "내가 다 써봤는데~ 이게 제일 좋더라!"하면서 팀에 무조건 이 방식으로 하자!라고 주장하기보다는 이 방식으로 써봤는데 뭐뭐뭐가 좋고, 뭐가 아쉬웠다 이런 얘기를 하면서 팀 별 합의점을 잘 도출해보자!
2. 첫번째 기업 과제에 대한 리뷰 하기 전에...
2.1 페어 프로그래밍
- 페어를 해보면 분명히 잘하는 사람과 못 하는 사람이 갈리기 마련! 그럴 때 잘하는 사람은 입 밖으로 많이 꺼내어 페어에게 정보를 전달하려고 노력해야 한다!
- 아는 내용에 대해 설명을 하다 보면 본인이 이해 안 가는 부분이 있거나 말하다가 얼버무리게 되는 경우가 있는데, 딱 그렇게 되는 부분을 공부해야 한다! 내가 잘 모르거나 확신이 없기 때문에 그러게 되는 건데 그럴 때일수록 공부를 더 해서 많이 말하려고 노력하기! 그런 연습이 쌓여서 면접 합격을 만든다,,!
2.2 README 작성 추가적인 Tips
- 캡쳐나 영상
README 파일에 기능 관련 캡처나 영상을 넣기 위해 소스코드에 추가하면 안 된다! 프로젝트 코드에는 오로지 소스코드만 있어야 함! 캡처랑 영상은 드라이브에 넣어서 링크로 기재하거나 해야 함!
→ 나 같은 경우는 issue 탭을 활용하여 업로드 한다! 🔗 issue 탭 활용하여 이미지 업로드 하는 방법 - 폴더구조에 대한 설명
단순히 폴더가 무엇무엇이 있는지에 대해 나열하는 건 지양하자! 이 프로젝트 코드를 딱 처음 보는 사람이 이 폴더 구조에 대해 이해할 수 있도록 설명을 해줘야 한다! 예를 들면, 누구나 다 알만한 내용을 설명해주는 것이 아닌 큼직큼직한 거 위주로 한눈에 파악할 수 있게 구조를 설명해주자! 또한 옵션이기 때문에 자신이 없다면 쓰지 않아도 무방하다! (우리 조는 잘 쓴 듯 😊)
3. 코드 리뷰 핵심 Points
3.1 다시는 HTML을 무시하지 마라.
- HTML 구조도 잘 짜자..!
라고 말씀하시면서 보여주신 코드가 우리 조 코드였다..^^;;(머쓱ㅎ)
- <div> 남발해도 무방하나! 필요 없는 <div>는 쓰지 말자! 우리가 태그를 넣는 이유는 구조 잡기와 스타일 잡기 위해서인데 굳이 구조나 스타일링에 필요하지 않은 태그를 넣는 것은 지양해야 함!
→ 그때 마크업을 내가 했는데... 약간 <div> 남발의 의도는 아니고, 그래도 어쨌든 카드를 하나 만들어야 하니까? <div>로 묶어준 거였는데 생각해보니 <li>가 있기 때문에 전혀 하지 않아도 됐었던 것..! 생각해보니 나와 성상님이 다른 거에는 엄청 신경 써놓고 정작 마크업은 다시 한번 돌아보지를 않았다..!(반성ㅠ 위에서 앤디가 하는 말.. 그거 사실 나한테 하는 말임 ㅠ)
- 또 우리 코드에 대한 리뷰로는 전반적으로 코드 잘 짰다고 하셨다!😊👍 근데 위의 코드를 보면 한 파일에 두 개의 컴포넌트를 작성하였는데, 물론 이게 깔끔해서 이렇게 쓰는 회사도 있기 때문에 틀린 건 아니지만! 보통 회사에서는 컴포넌트 한 파일에 하나씩 넣는 게 대부분이라고 한다! 보통 이 CommentItem이 물론 여기저기서 쓰지만 CommentList말고는 아예 더 이상 쓰는 데가 없기 때문에 이렇게 짜는 경우 오히려 파일 구조만 더 복잡해진다고 함!
3.2 CSS 공부는 필수!
- 프론트엔드를 하기로 마음먹은 이상 CSS 공부는 필수! 즉, 프론트엔드 - UI 화면 스타일링 = 0이라는 뜻... 혹시라도 그게 너무 싫고 JavaScript만 집중적으로 하고 싶다면 Node 개발자를 고려해야 한다!
- display: flex! 는 너무 많이 남발하지 말자! 충분히 flex를 쓰지 않고도 할 수 있는 경우에는 flex를 남발하는 것은 그다지 좋지 않다!
- padding을 잘 사용하자! 잘못 사용하면 내 컴퓨터에서는 내가 원하는 대로 잘 보이지만 다른 사람 컴퓨터에서는 절대 그렇게 보이지 않는다!
- height 아무데나 주지 말자! 모든 요소의 높이는 자식에 의해서 결정되는 것이기 때문에 height를 주게 되는데, 부모 컴포넌트에 높이를 줘버리면 자식의 콘텐츠가 잘려 보이는 경우가 있기 때문에 주지 말자, height: auto 주는 경우도 있는데 굳이 안 줘도 됨!
3.3 Styled Components의 치명적인 단점!
- 오염되기 쉽다!
이 경우는 styled-components를 혼자 쓸 때 발생하는 문제는 아니고! 다른 CSS Framework을 함께 사용하는 경우에 발생하는데, 다른 쪽 컴포넌트에서 모르고 styled-components 사용 없이 동일한 클래스네임으로 스타일을 정의하게 된다면 스타일이 오염될 수 있다는 것!
→ 이 사실은 처음 알았다. 항상 styled-components를 단독적으로 사용했었어서 이런 경우에 대해서는 아예 듣도보도 못했었는데, 만약 두 가지를 같이 쓰게 되는 경우에 꼭 명심해야겠다!
3.4 유지보수하기 쉬운 코드
- 상수를 따로 관리해놓으면 유지 보수하기 편하다!
- 상수는 무조건 대문자로 네이밍하고, 단어끼리 연결할 때는 언더바(_)로 연결!
- 멘토님 왈: 이 정도는 기본적으로 했었어야 했다! (뿌듯)
- API 주소를 저장할 때 보통 BASE_URL이라고 많이 명명하는데, 이때 BASE_URL은 딱 .com 혹은 .co.kr 까지의 주소를 말하고, 그 이후의 엔드 포인트는 사용하는 측에서 뒤에 추가되어야 하는 주소를 더해주는 식으로 개발을 많이 한다!
- ⚠️ 주의! 컴포넌트 내부에서 상수를 선언하는 경우가 있는데 이렇게 하면 안되고, 상수는 상수 파일을 따로 빼서 관리해야 한다. (이럴 때 utils 폴더를 사용하게 되는 것! 아래 5번 내용 참고) 컴포넌트에는 딱 컴포넌트에서만 쓰는 데이터나 state, props로 관리하는 것들! 즉 해당 컴포넌트 내부에서 계속 변하는 것들만 넣어놔야 한다!
3.5 게으른 개발자에게 좋은 코드가 나온다!
- import 경로를 줄이자!
- 절대경로로 해서 시작할 수 있게 해줘야 함! 🔗 리액트 절대 경로 설정하는 법
- import 순서도 보기 좋게 술술 읽히게 적어놔야 한다! 비슷한 것들끼리 묶자!
4. Intersection Observer 사용 시의 주의 사항
- 문서의 생활화 (MDN과 Can i use 꼭 보자!)
- Intersection Observer는 IE에서는 지원되지 않는다!
- 지원되지 않은 브라우저까지 지원하기 위해 polyfill을 구현했어야 한다!
→ 이건 좀 확! 아쉬웠던 게 안 그래도 작업하다가 내가 성상님한테 우리 시간 남으면 polyfill까지 구현하자고 했고! 실제로도 작업이 일찍 끝나서 시간이 여유로웠었는데, IE에서만 지원 불가이고 모던 브라우저에서는 다 지원을 하길래, 어차피 곧 지원 종료되는 IE..(흐린눈(먼산)) 이러면서 그냥 안 했던 것이다 ㅎ... 근데 따져보면 더 이상의 지원을 하지 않겠다는 의미이지 지금 있는 브라우저가 아예 사용 불가인 것은 아니니 앞으로 그래도 5년 간은 IE를 신경 쓰는 것으로....😅
- 더 이상 데이터 없을 때의 처리
- 마지막 데이터까지 로딩됐을 때의 처리를 했어야 했다! (이것도 우리는 했다! 😊 야호!)
5. Utils성 함수
- 📁 utils 폴더 : 어디에 특정한 데에 한번 쓰고 마는 게 아니라 의존성 없이 공통적으로 자주 사용되는 로직을 모아놓은 폴더
- utils성 함수 활용 능력은 주니어와 미들레벨의 차이를 결정짓는다.
- 주니어는 라이브러리를 잘 써야 한다! 남의 코드를 보고 분석을 잘해야 한다. 남의 코드를 보고 바로 이해하는 것이 중요하다! → 그러려면 많이 읽어야 하지...
- 미들레벨은 내가 만든 코드를 남이 잘 쓰도록 노력해야 한다!
- utils성 함수의 분리 기준: 컴포넌트에서 두번 반복되는 경우 무조건 분리!
이번 세션도 역시나 너무너무 유익했는데, 우리 코드가 좀 여러 번 언급되어서 이번에는 녹화본을 다시 보면서 필기를 제대로 해보았다! (자기애 강한 편..^^ㅎ) 사실 과제하면서 바쁘지만 세션 회고를 밀리지 않으려고 노력하는 이유는 이렇게 정리해놓으면 나중에 기억이 가물가물해질 때 다시 한 번씩 보면서 되새길 수 있어서인 거 같다! 앞으로도 더 더 열심히 쓸 것인데...(과연...?)... 사실 오늘 목표는 1주차 회고까지 쓰는 거였는데, 오늘 그거까지 쓰려면 운동을 못할 거 같기 때문에 오늘은 일단 여기까지! 내일 세 번째 세션 시작 전까지 올리려고 노력해봐야겠다! 우리 팀원 분들이 내 블로그 열심히 잘 봐주고 계셔서 완전 동기부여 만땅!💪 게다가 블로그 쓰는 거 너무 재밌다.... 완전 맛들려 버림...
'🏄♀️ 원티드X위코드 프리온보딩코스' 카테고리의 다른 글
[프리온보딩코스 과제 회고 #3] 권한 관리와 대시보드 그리고 유효성 검사 (0) 2021.08.08 [프리온보딩코스 주간 회고 #1] 치료가 필요할 정도로 심각한 '블로그 중독증'입니다. (4) 2021.08.02 [프리온보딩코스 과제 회고 #2] 상품 조회 이력과 필터링 그리고 랜덤 로딩하기 (7) 2021.08.01 [프리온보딩코스 세션 회고 #1] 취업 성패를 결정하는 Business Manner (2) 2021.07.28 [프리온보딩코스 과제 회고 #1] 무한 스크롤(Infinite Scroll) (0) 2021.07.27