코드리뷰에 대해
현업자들 코드 리뷰라고, 모든 함수 안쪽까지 다 파헤쳐 보고... 그런 건 아니다.
그래서 함수 네이밍은 굉장히 중요하다.
이름 제대로 되어있으면 안에 다 볼 필요 없이 빠르고 명확한 이해가 가능하다.
아무튼 이에 더해, 오늘은 코드 리뷰에 대해 이야기 해보고자 한다.
- 다른 사람이 쉽게 수정 가능? ⭐
- 다른 사람이 쉽게 읽기 가능? ⭐
- 확장 가능?
이것에 근거해서 오늘자 멘토님이 보는 클린코드 포인트는,
- 조건문 안에 복잡한 연산식 금지.
읽기도 싫고 수정도 어렵다. 함수들 일일이 찾아다니게 만들지 말고,
조건문만 보면 딱 알 수 있게 정의하도록 한다.
최소한 const로 정의해서 집어넣는 노력을 하도록 하자.
- 반복문 쪼개기
안 쪼개진 반복문은 객체지향 관점의 개방 폐쇄 원칙하고도 좀 떨어질뿐더러,
수정도 상대적으로 어렵다.
- 임시 변수 질의로 바꾸기
어려운 개념이긴 하나,
let 같은 건 존재 자체가 임시 변수고,
이런 것들은 함수나 클래스 안에서 쓰는 거라면 그냥 빼 둘 수도 있다고 한다.
안 쪼개진 반복문은 객체지향 관점의
개방 폐쇄
원칙하고도 좀
떨어질뿐더러,
수정도 상대적으로 어렵다.
- 선언적인 함수 활용하기 (map, filter)
안에 있는거 굳이 계산하면서 볼 필요 없도록..
자세한건 멘토님의 강의자료를 참고하자.
아무튼 오늘은 성래의 Todolist 코드를 기습해보는 즐거운 시간을 가지기로 하였다.
피드백
1. 파일명, 함수명, 변수명 명확하고 느낌 빡 오게하자. ( isThis << 이런거 별로 )
2. 에러메세지는 익셉션 으로 정확하게 주자. (주석도 장난 그만)
3. 선언식 아니여서 아쉬운 부분있음.
- 분리 가능해 보이는 클래스(함수)들은 분리해보자.
this.todoList 안에 글 수정 함수 같은 건 따로 떼어내도 될 듯하다.
따로 클래스 파서 this.<~~> = new <~~>() 식으로 넣어준다.
각자의 존재감(역할)이 명확해지게.
바뀌는 것을 검사해서 업데이트 해주는 함수를 객체지향에선 옵저버 패턴이라고들 하는데..
이건 나중에 알아보도록 한다.
질문
Q. 승원님 : 회사에서 코드리뷰 할 때 시연 같은 과정 없이 깃헙만 보나요?
- 일단 그렇다. 어차피 pr 하기 전에 테스트 서버에서 돌아가고, 배포해보면 테스트 서버에서 돌아가는 걸 보게 되기 때문에 시연이 필수는 아닌 듯 하다.
Q. 동환님 : 주석을 최소화하는 게 좋은 코드라 말씀해 주셨는데, 멘토님은 주석을 어떻게 활용하시는지?
- 주석을 사용하지 않아도 이해 가능하게 짜라는 게 답변의 핵심이였다. 네이밍과 구조가 똑바로 되어있음에도 복잡하다면 그때는 정말 주석의 힘을 빌릴 때라고 본다.
- 칼같이 잘라 말하기 어려운 주제이나, 주석은 최대한 지양하는 것이 본인의 스타일이다
- 디프리케이트 등의 설명은 필수로 작성하도록 한다. 알아서 잘 써주는 툴도 있다.
Q. 미서님 : import 는 정리하기도 하나요
- eslint 로 한다. 설정 빡쎄고 잘 할 수록 코딩의 질이 높아지곤 한다. 근데 너무 빡쎄게 설정하면 오히려 더 힘들 수도 있어서 타협이 필요하기도.. 본인은 빡쎄게 하는 편.
- eslint 설정은 검색해보면 다 나오니까 그거 쓰자
Q. 승원님 : 실무에서 절대경로 상대경로 쓰는 기준 있나요
- 동일한 디렉토리 안에 있다면 거기까지는 상대경로를 허용하나, 이 이외에는 대부분 절대경로 지향 하는 게 좋다.
Q. 승원님 : useTranslation 에 저 t 한글자 뭐죠
- i18next 라고, 번역해주는 외부 라이브러리다. 거의 컨벤션 급이다.
익스텐션
- Code Spell Checker = 맞춤법 체크
- Git lens = 코드 작성자 확인
- material icon theme = 아이콘
기타 이야기들
- 확장 가능한 코드가 항상 정답은 아니지만 되도록 확장 가능하게 짜보자.
- 코드를 짜면서 계속 정리하는 느낌으로 작업하는 사람과, 다 만들고 한번에 정리하는 사람들이 있다. 이건 스타일이고 정답이 없지만, 멘토님은 멘토님만의 노하우가 있고, 디렉토리 계속 나누면서 짜는 편이라고 하신다. (mbti 같은 걸 타다 싶다고 하신다.)
- 커피챗 때 하고 싶은 컨텐츠가 있다면 편하게 말해보도록 하자. 그게 멘토 입장에서도 편하다고 하신다.
- 멘토님은 어린이 대공원에 많이 나타나신다.
- 우리는 노션 클로닝 때 고통이 기다리고 있다고 하셨다. (그때까지 옵저버와 mvc 패턴에 대해 알아보도록 하자.)
- 최근 면접을 보러 가셨다고 한다.
- 연차가 쌓이다 보니 면접 때 기술적인 것은 잘 안 물어본다고 하신다. (호이스팅 뭐 이런거..) 팀관리, 이직사유, 프로젝트 등등에 대해서 더 물어본다고 하셨다.
- 면접관은 곧 회사의 수준이다.