1. 리뷰확인하기
- EOF( End of file) 관련
- editorconfig 통해 강제 줄바꿈 적용해보기
- StyledComponent의 S 네이밍 스페이스 구분의 이유?
- 상수 변수 함수, 컴포넌트 네이밍 규칙
- 상수네이밍의 일관성 부족
- Tabs, data, movie, movieColumns, …
- Items
- object로 컴포넌트 만들어둘 경우, 사용하지 않는 컴포넌트가 미리 생성되어있어 비효율 발생
- 리렌더링 시 이슈
- key를 지정함으로 해결 (by 승범)
- DataTable 컴포넌트가 같기 때문에, 내부 state를 그대로 가져와 사용하게 된다. 따라서 key를 통해 다른 컴포넌트임을 명시함으로써 unmount, mount를 새로하도록 한다.
- 변수 네이밍 관련
- currItem > currentItem >> selectedItem
- init 추적 관련 console.log() 제거
- Data 타입의 네이밍 관련
- props로 받은 data를 useState의 초기값으로 사용하는 패턴
- 정렬을 위한 useEffect()
- 리렌더링 되는 문제 해결 가능
- orderBy의 key가 없을경우 얼리리턴 해주기
- CompareFunc의 복잡성 낮추기
- column이 같은 정렬 상태를 공유하고 있는 문제
- sort 가능한 column, UI적으로 표현해주기
3. 개선 사항 설계
4. 개선 사항 코드 반영
✅ editorconfig 적용
✅ 네이밍 관련 수정
[1. 네이밍 일관성 유지]
- 참고링크(google 및 airbnb 컨벤션 총정리, Toast, class101컨벤션)
- 나만의 네이밍 컨벤션
- 상수
- 대문자 SNAKE_CASE
- 절대로 변하지 않는 상수값
- 변수
- camelCase
- 재할당이 이루어지지 않는 값
const
- 재할당이 필요한 값
let
- 함수
- camelCase
[질문2]
[2. 추상적 네이밍 수정]
- DataTable의 row와 column으로 받는 data들의 타입
Data
,Column
⇒DataTableRow
,DataTableColumn
- DataTable에 사용하는 Row, Column에 관한 타입임을 명시
- sort의 callback함수의 인자들의 네이밍
a
,b
⇒prev
,next
[3. optional property에 대한 변수명 수정]
- [x:string] ⇒ [key: string]
✅ console.log 제거
정렬관련 useEffect의 key가 없는 경우 early return 처리
!! 중요 !!
추가 요구사항 들어올 경우, 매번 새로운 컴포넌트와 타입을 지정해야하는 한계 처리
- 공통 요소를 뽑아내어, 확장가능한 구조로 만들기
- 확장 가능한 => 새로운 값 item이 서버 등에서 내려준다는 전제로 접근을 해보시면 좋을 것 같아요!
- React Tab 을 customHook을 통해 만들어보기
CompareFunc
- 리뷰 사항 다시 보며 재설계
- lodash 라이브러리 살펴보기
column이 같은 정렬 상태를 공유하고 있는 문제
- vuetify 코드한 번 살펴보기
sortable column에 hover 및 pointer 지정하기
우선순위
- 관련 없는 자잘한 review 반영
- Tab 로직 재설계
- CompareFunc 재설계
2. 셀프 코드 리뷰
응집도는 어떤 관점에서 보냐에 따라 다르다
- 관심사 별
- domain
- 기능별
- 컴포넌트별, util별
- 관심사별 먼저 묶고 > 여러군데에서 사용되면 기능별
- duck pattern
- api에 안에 type 선언하고, 여러 군데서 사용하면, 그 때 빼는 것을 고려
- 데이터 정합성
- 파편화 <Pick ..>
- 상황별로 다 다르기 때문에, 나의 상황을 고려해야한다!
- 처음 설계할 때
- server에서 데이터를 어떻게 내려줄까?
- 기능은 무엇이있을까
- 과제의 목적
- 확장성과 재사용성
- 구현을 했나 설계를 했나
- 시간분배 해야한다!
- 큰문제는 잘게 쪼개어서 생각해봐야한다.
- duck패턴 / React 자유도 높다.