STUDY

코드 리팩토링 - 멘토님의 조언을 적용해보자

Lim임 2026. 2. 12. 05:02

26.02.10 

모아클 프로젝트 진행 중 무작정 AI의 코드리뷰에만 의존하고 있었던 우리 팀에게

마르코 멘토님께서 PR 리뷰와 조언을 남겨주셨다.

 


클린 코드를 유지할 때 꼭 습관들여야 할 내용을 알려주셨다 

대표적으로

1. 주석 삭제

  • 관리 포인트가 더 생기게 됨
  • 함수 이름만 봐도 알 수 있는 코드를 주석으로 설명하는 것은 시간 비용이 발생한다
  • 기능 수정 시 주석도 같이 수정해야해서 비용 추가 발생!!

2. console.log 사용 자제

  • 콘솔 로그는 개발 단계에서만 사용하지 사용자에게 보여주는 용도가 아님!
  • main에 머지할 때에는 '사용자에게 코드를 보여준다'고 생각하기

3. eslint prettier를 적극 활용하자

  • 초기 설정 시간 대비 사람의 눈으로 찾기 힘든 오류를 잡아주기 때문에 거의 필수
    • 쓸모없는 공백 없애기
    • 필요없는 console.log 없애기
    • any 사용 불가

 

팀원들과 회의결과 2,3번은 적극 수용하기로 했다.

eslint를 활용하여 잡아주기로 했다.

 

주석 관련해서는 의견이 분분했다.

 

1. 시간이 촉박한 상태에서 매 코드에 PR 리뷰를 달아주기 위해서는 가독성이 좋아야한다.

=> 주석은 큰 도움이 된다.

2. 그럼에도 강하게 커야한다.

 

코드만으로 이해가 안될 것 같으면 사용하는게 주석

중복된 의미를 가지지 않게 하는게 중요하나

hook 이나 함수에 사용처를 알려주는 것은 괜찮은 주석이 된다.

 

js 에서 인자의 타입을 알려주는 것은 타당하나 ts에서는 

주석을 잘 적을 생각보다는 코드를 어떻게 하면 잘 이해할 수 있게 짤까가 중요하다고 하셨다.

 

결국은 주석이 필요할지 아닐지를 늘 생각하면서 코드를 짜는게 습관에 중요하다.

 

 

불편함을 느꼈을 때 정해지는 게 컨벤션

영지님: 누구는 get으로 누구는 fetch로 표현해서 통일이 필요하다.

 

절충안을 생각하기 보다는 이제 '합의'를 해야하는 시기임 => 이때 필요한 게 컨벤션

style guide로 관리 혹은 eslint로 강제화(쉽지 않음)


min 으로 받던 duration을 초로 받기

 

1. 백엔드가 duration을 초로 받는다고 가정하고 코드 짜기

 

https://tanstack.com/query/v5/docs/reference/QueryClient?utm_source=chatgpt.com

 

QueryClient | TanStack Query Docs

QueryClient The QueryClient can be used to interact with a cache: tsx import { QueryClient } from '@tanstack/react-query' const queryClient = new QueryClient({ defaultOptions: { queries: { staleTime:...

tanstack.com

 

 

 


코드의 의미

기존 코드

  • classId가 없을 때(클래스를 생성할 때) 억지로 0을 넘겨주자
  • 0번 클래스가 없어서 훅 내부에서 막히겠지만
    코드상으로는 "ID가 0인 데이터를 가져오라"는 의미가 되어 어색해짐

 

1. lessonId를 optional로 받기(undefined)

=> enabled 옵션 = lessonId가 존재하면 실행 없으면 

!!lessonID = lessonID를 boolean 타입으로 변환

 

2. fetchLesson(lessonId!) <- !는 lessonId가 optional이라 

 

 

기존 코드에서 이미 

enabled: !!lessonId가 들어가 있긴 했어요. 

하지만 사용처에서 0을 넣어주는 바람에 !!0이 false가 되어 운 좋게(?) 안 돌아갔던 건데, 

멘토님은 "이걸 0으로 막지 말고, 아예 타입을 비워두는 게 더 정석이다"

 

'STUDY' 카테고리의 다른 글

데이터베이스  (0) 2026.02.09
CPU 스케줄링 알고리즘  (0) 2026.02.09
운영체제 - 메모리, 프로세스와 스레드  (0) 2026.02.03
파이프라인 모니터링 클러스터 모니터링  (0) 2026.02.01
HTTP 프로토콜 & 운영체제  (0) 2026.01.28