2주차 미션은 숫자 야구 게임을 구현하는 것으로, 함수를 분리하고 각 함수별로 테스트를 작성하는 것이 목표이다. 숫자 야구 자체가 생소했기 때문에 먼저 어떤 게임인지 알아보기로 했다
Wordle과 비슷한 느낌인데 숫자의 위치와 값을 맞추는 CLI 형태의 게임인 것 같다. 특이한 점은, 우아한테크코스에서 자체 제작한 MissionUtils 라이브러리를 사용해 구현해야 한다는 점이다
MissionUtils 라이브러리🔽
실수를 방지하기 위해 기능 외적으로 새롭게 신경 써야 할 부분들을 정리했다
- 기능을 구현하기 전 docs/README.md에 구현할 기능 목록을 정리해 추가한다
- Git의 커밋 단위는 앞 단계에서 docs/README.md에 정리한 기능 목록 단위로 추가한다
- 기능 요구 사항에 기재되지 않은 내용은 스스로 판단하여 구현한다
- indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다
- 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라
- Jest를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다
- 프로그램 구현이 완료되면 ApplicationTest의 모든 테스트가 성공해야 한다
- 요구 사항에서 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다
커밋 메시지 컨벤션🔽
JavaScript 코드 컨벤션🔽
기능 목록 단위로 커밋하기 위해 구현할 기능 목록을 정리하고 구현을 시작했다!
Pull Request 주소🔽
기능 구현 자체는 어렵지 않았지만 그만큼 기능 외적인 것들에 신경 쓰라는 의도가 있었다고 생각한다
ES 모듈이 아닌 CommonJS 모듈에서 클래스를 바탕으로 CLI 프로그램을 제작해보는 과정도 익숙하진 않았지만, 함수를 분리하고 테스트 코드를 활용하며 지속 가능한 개발을 위해 고민했던 시간이 겉으로 보이지 않아도 더욱 값진 경험이었다
2주차 공통 피드백
- README.md를 마크다운으로 상세히 작성한다
- 기능 목록을 재검토한다. 너무 세세하게 작성하지 말고 예외적인 상황도 정리한다
- 기능을 구현하며 기능 목록을 계속해서 업데이트한다
- 값을 하드 코딩하지 않는다. 상수를 만들고 이름을 부여해 역할과 의도를 드러낸다
- 구현 순서도 코딩 컨벤션이다. 클래스는 필드, 생성자, 메서드 순으로 작성한다
- 한 함수가 한 가지 기능만 담당하게 한다
- 한 함수가 한 가지 기능을 하는지 확인하는 기준을 세운다 ex) 15라인 이하로 구현
- JavaScript에서 객체를 만드는 다양한 방법을 이해하고 사용한다
- 테스트를 작성하는 이유에 대해 본인의 경험을 토대로 정리해본다
- 처음부터 큰 단위의 테스트를 만들지 않는다
기능 목록을 미리 작성하니 복잡해 보이는 작업도 차근차근 해결해 나갈 수 있었다. 한 번 작성한 기능 목록에 얽매이지 않고 과감하게 업데이트하며 죽은 문서가 아닌 살아있는 문서를 만들어야 한다는 점이 인상적이었다. 3주차부터는 테스트 코드도 더 적극적으로 활용해보자 😎
본 내용은 우아한테크코스의 프리코스 과정을 바탕으로 작성되었습니다.
'Languages > JavaScript' 카테고리의 다른 글
[HUFS/GnuVil] #19 DOM (0) | 2022.11.11 |
---|---|
[HUFS/GnuVil] #18 브라우저의 렌더링 과정 (0) | 2022.11.11 |
[HUFS/GnuVil] #17 String, Symbol (0) | 2022.11.04 |
[HUFS/GnuVil] #16 Number, Math, Date, RegExp (0) | 2022.11.04 |
[HUFS/GnuVil] #15 배열 (0) | 2022.11.04 |