과제 체크포인트
배포 링크
https://suhyeon57.github.io/front_6th_chapter2-1/
기본과제
- 코드가 Prettier를 통해 일관된 포맷팅이 적용되어 있는가?
- 적절한 줄바꿈과 주석을 사용하여 코드의 논리적 단위를 명확히 구분했는가?
- 변수명과 함수명이 그 역할을 명확히 나타내며, 일관된 네이밍 규칙을 따르는가?
- 매직 넘버와 문자열을 의미 있는 상수로 추출했는가?
- 중복 코드를 제거하고 재사용 가능한 형태로 리팩토링했는가?
- 함수가 단일 책임 원칙을 따르며, 한 가지 작업만 수행하는가?
- 조건문과 반복문이 간결하고 명확한가? 복잡한 조건을 함수로 추출했는가?
- 코드의 배치가 의존성과 실행 흐름에 따라 논리적으로 구성되어 있는가?
- 연관된 코드를 의미 있는 함수나 모듈로 그룹화했는가?
- ES6+ 문법을 활용하여 코드를 더 간결하고 명확하게 작성했는가?
- 전역 상태와 부수 효과(side effects)를 최소화했는가?
- 에러 처리와 예외 상황을 명확히 고려하고 처리했는가?
- 코드 자체가 자기 문서화되어 있어, 주석 없이도 의도를 파악할 수 있는가?
- 비즈니스 로직과 UI 로직이 적절히 분리되어 있는가?
- 코드의 각 부분이 테스트 가능하도록 구조화되어 있는가?
- 성능 개선을 위해 불필요한 연산이나 렌더링을 제거했는가?
- 새로운 기능 추가나 변경이 기존 코드에 미치는 영향을 최소화했는가?
- 코드 리뷰를 통해 다른 개발자들의 피드백을 반영하고 개선했는가?
- (핵심!) 리팩토링 시 기존 기능을 그대로 유지하면서 점진적으로 개선했는가?
심화과제
- 변경한 구조와 코드가 기존의 코드보다 가독성이 높고 이해하기 쉬운가?
- 변경한 구조와 코드가 기존의 코드보다 기능을 수정하거나 확장하기에 용이한가?
- 변경한 구조와 코드가 기존의 코드보다 테스트를 하기에 더 용이한가?
- 변경한 구조와 코드가 기존의 모든 기능은 그대로 유지했는가?
- (핵심!) 변경한 구조와 코드를 새로운 한번에 새로만들지 않고 점진적으로 개선했는가?
과제 셀프회고
만만하게 생각했다가… 큰 코 다쳐버린 이번 주 과제. 월요일부터 회식, 그리고 갑작스러운 일정들로 인해 제대로 진행이 되지 않았는데, 확실히 체력과 집중력에서 손해를 많이 봤습니다 😓
처음 코드를 봤을 때 너무 막막해서 "어디서부터 손대야 하지?" 싶은 마음뿐이었고, 평큐 타임에 테오의 힌트를 듣고 나서야 겨우 시작할 수 있었습니다. 조금만 더 여유 있었더라면 더 클린하게 리팩토링할 수 있었겠다는 아쉬움도 있습니다.. 😅
원래 이렇게 챕터 시작 주차는 유독 힘든 건가요…? ㅠㅠ
과제를 하면서 내가 제일 신경 쓴 부분은 무엇인가요?
과제를 다시 해보면 더 잘 할 수 있었겠다 아쉬운 점이 있다면 무엇인가요?
main 파일에서 로직의 분리를 통해 클린 코드로 구성해나갔지만, 각각의 로직 자체는 아직 클린 코드라고 할 수 없습니다. 과제를 다시 한다면 로직 자체도 클린하게 구현해보고 싶습니다.
리뷰 받고 싶은 내용이나 궁금한 것에 대한 질문 편하게 남겨주세요 :)
과제 피드백
"처음 코드를 봤을 때 너무 막막해서 "어디서부터 손대야 하지?" 싶은 마음뿐이었고, 평큐 타임에 테오의 힌트를 듣고 나서야 겨우 시작할 수 있었습니다. ... main 파일에서 로직의 분리를 통해 클린 코드로 구성해나갔지만, 각각의 로직 자체는 아직 클린 코드라고 할 수 없습니다. 과제를 다시 한다면 로직 자체도 클린하게 구현해보고 싶습니다." 라고 했지만 코드를 보니 충분히 잘 해냈는걸요?
뭔가 본인만의 클린코드에 대한 이상이 너무 높지 않았나 싶어요. 어쩄든 맨 처음에 제가 드렸던 코드에 비해서 지금은 충분히 쓸만해졌잖아요? 레거시 코드를 만났을때 막막하더라도 조금씩 조금씩 어찌되었든간에 지금 보다는 조금 더 낫도록 하는것들이 쌓여서 클린코드가 되는 것이니까요.
수고많았습니다. 5주차 과제에서는 너무 높은 목표보다는 지금까지 어쨌든 지금까지 했던 것에 대해서 과정을 돌이켜보는 회고를 써보길 바래요. 화이팅입니다!