우테코 프리코스 - ⚾️ 숫자 야구 게임
📌 문제 및 요구사항
✏️ 회고
❗️ 클래스 필드를 사용할 것인가? constructor() 안에서 정의할 것인가?
- App이라는 클래스는 야구게임 App이다. 야구 게임의 룰을 변경하지 않는 이상 인스턴스를 생성할 때마다 초기화할 값이 없다. 그러므로
초기화 하지 않는 프로퍼티 값들은 클래스 필드에 정의 해두었다.
❗️ 요구사항 제대로 읽기
- 요구사항 제대로 읽지 않아서 라이브러리 사용하여 랜덤값 구하면 되는데, 랜덤값 구하는 로직 직접 짜서 다시 처음부터 시작하게되었다.
- 또 제대로 안읽어서 특정 메서드 사용하여 구하라했는데 라이브러리에서 제공하는 다른 메서드로 구현하여 다시 작성했다…
❗️jest를 통한 테스트 케이스는 어떻게 확인할 수 있는지 알게되었다.
- 주어진 라이브러리를 활용하여 1번은 테스트 하는 것을 알 수 있었다. 그런데 2번째 값을 얻기 위해서 내가 해주어야 하는 것이 무엇인지 모르겠다.
내가 직접 예상되는 값을 생각하여 테스트에 입력값만 적어주고 소스코드에서는
❗️랜덤값 받은 것을 프로퍼티로 저장해두자
함수형 프로그래밍을 하면서 함수를 호출하고 반환된 값을 다른 함수에게 전달하는 방식으로 랜덤값과 입력값을 비교하고 결과를 반환하는 방식으로 하였는데, 이 방법보다는 App 이라는 클래스가 랜덤값과 입력값을 가져 한곳에서 이 데이터를 가져다가 사용하는 것이 적절하다고 판단하여 위와 같이 프로퍼티로 저장해두었다.
❗️형변환 확인하기
테스트 케이스를 작성할 때, answers 배열의 요소를 문자열로 넣어준 것을 제대로 확인하지 않아 왜 자꾸 문제가 발생하는지 제대로 파악하기 어려웠다. 아마도 Jest를 사용한 디버깅이 익숙하지 않은 탓이었다. 때문에 여기서 의외로 많은 시간을 보냈다. 단위 테스트를 자주 하면서 Jest 디버깅에도 익숙해지도록 노력해야겠다.
🏓 소감
저번주에 이어 2주차에 접어들게 되었다. 학원이 끝나고 혹은 주말에 틈틈히 문제를 풀었는데도 익숙하지 않는 Jest 테스트 방법 때문에 해결방법도 모른체로 삽질(?) 을 많이했던 한주였다.
그래도 주변에 물어도보고 검색도 하면서 구현까지는 어찌저찌 완성하였다.
하지만 리팩터링에 시간을 많이 쏟지 못한 것이 아쉬웠다. 우테코 문제 푸는 것도 중요하지만 당장 리액트 수업도 복습해야하고, CS 공부도 해야하고 알고리즘 문제도 풀어야하고 해야할 일이 너무 많다.
하지만 꾸준히 계획을 세워서 해나갈 것이니 언젠간 좋은 날이 올 것이라고 믿는다.