Day1. 클린코드

이진희·2022년 7월 4일
0

학습자료 및 학습내용 정리

노션


오늘 한 것

✅ 내 코드 설명하기 & 코드 리뷰 받기

  • 오늘 소통에 있어서 미숙한 점을 참 많이 느낀 것 같다. 내 코드 전체를 다른사람에게 설명해본 적이 없어서 많이 버벅거렸다.앞으로 내 코드를 남에게 설명할 일이 많을텐데 좀 더 남을 이해하기 쉬운 방향으로 설명할 수 있는 능력을 키워야겠다는 생각을 했다. 긴장을 해서 많이 버벅거리기도 했는데 이건 많이 하다보면 충분히 개선될 거라고 생각한다.
  • 프로젝트를 왜 이렇게 구성했는지, 프로젝트 진입점부터 시작해서 요구사항을 어떤 로직으로 구현했는지를 중점으로 설명하는 연습을 하면 좋을 것같다. 핵심적인 기능의 로직은 따로 빼서 설명하면 더 좋을 것 같다.
  • 나는 다른 분들 코드 리뷰를 할 때 syntax적인 부분을 집중해서 봤었는데, 로직에 대해서도 보고 고민해보는 시간을 가진 후 로직관련 리뷰도 남기면 좋을 것 같다. 그리고 내 말이 다 옳은 것이 아니니 꼭 권유/의문 형태로 리뷰를 남길 것!

✅ 클린코드 학습

  • 클린코드를 측정할 수 있는 단위는 WTF 단위 뿐..! 남이 내 코드를 봤을 때 WTF이 덜 나오게 노력하자!
  • 중구난방 내 맘대로 지은 변수이름들을 공통된 의미를 갖는 단어를 써서 읽기 편하게 만들어줘야 할 것 같다.
  • 함수는 늘 자기가 맡은 한 가지의 행위만 하도록!
  • 함수를 생성할 때 순수함수로 만들도록 노력하자. 순수함수로 만들기 위해서는 parameter를 flag로 쓰지 않는 것이 가장 중요할 것같다. parameter를 flag로 써서 조건 분기를 하는 순간 함수는 하나의 동작이 아닌 여러개의 동작을 하게 되어 단일 책임원칙에도 어긋나게 된다.
  • 사이드 이펙트를 피하기

✅ 선발과제 리팩토링

클린 코드를 학습한 후 보인 내 코드의 문제점

1. 변수 / 함수 이름이 중구난방

  • 함수 이름 같은 경우 보통 동사로 시작되게 네이밍을 하는데 함수의 의미를 잘 전달되게 하는 동사를 찾는 것이 어렵다. eventhandler의 경우 handle~~의 형태로 함수명을 짓는데 그 외의 것들도 나름의 규칙을 갖고 작명하면 좋을 것 같다.
  • 같은 List형태의를 갖는 컴포넌트인데 어떤 곳에서는 그냥 복수형으로 컴포넌트이름을 짓고, 어떤 곳에서는 [~]List라는 형태로 이름을 지었다. 통일해주자.

2. 여러 곳에서 공유되는 함수도 아닌데 utils 폴더에 정리

  • 공통적으로 쓰는 함수 / 단일 컴포넌트에서 쓰는 함수 모두 utils 폴더에 정리했다. utils 폴더를 만든 이유가 다른 컴포넌트에서도 사용하는 함수들을 분리해놓기 위함인데, 거기에 굳이 단일 컴포넌트에서 쓰는 함수를 정리할 필요가 없는 것같다. 단일 컴포넌트에서 쓰는 함수는 그냥 컴포넌트 내에서 정리해도 괜찮을 것 같다.
  • 또 utils보다는 helper/common이라는 이름이 직관적으로 폴더 구조를 이해하기 더 쉬울 수 있을 것 같다. 나

3. 코드의 중복성

  • 이메일 validation/비밀번호 validation을 할 때 거의 같은 로직인데 따로 함수를 만들어서 사용했다.
  • 이메일 validation과 비밀번호 validation에서 다른 점은 validation을 할 때 사용하는 Regex 표현식 뿐이다. regex를 이용해 조건을 테스트하고, 테스트 결과에 따라 state를 업데이트한다. 이 로직을 함수로 만들고, 이메일/비밀번호 regex만 바뀌게 해서 좀 더 공통적으로 사용할 수 있는 형식으로 바꾸는 게 좋을 것 같다.

4. 굳이..?싶을 정도로 너무 세세하게 컴포넌트를 분리

  • styled-component를 써서 만든 컴포넌트를 사용해서 가독성 좋게 표현할 수 있기 때문에 굳이 Style만 지정해놓은 컴포넌트를 따로 파일로 빼놓지 않아도 될 것 같다. 너무 세분화해도 좋지 않고, 너무 뭉쳐놔도 좋지 않다. 뭐든지 적정한 지점을 찾는 게 가장 어려운 법이다. 그 지점을 찾을 수 있도록 연습해보자.

✅ 아쉬웠던 점

  • 첫 날이라 좀 준비가 미흡했던 점이 많았던 것 같다. 회의에 참여할 때는 늘 논의할만한 것들을 생각해가고, 논의할만한 것에 대한 의견도 꼭 준비해가자.
  • 의견을 내놓기 전에는 왜 이런 의견을 냈는지도 추가해서 설명하는게 설득력을 높이기 좋을 것 같다.
profile
슬로우 스타터

0개의 댓글