2주차 숫자야구 후기

SWARVY/javascript-baseball: 숫자 야구 게임 미션을 진행하는 저장소 (github.com)

 

GitHub - SWARVY/javascript-baseball: 숫자 야구 게임 미션을 진행하는 저장소

숫자 야구 게임 미션을 진행하는 저장소. Contribute to SWARVY/javascript-baseball development by creating an account on GitHub.

github.com

 

2주차 미션은 숫자야구였는데, 총평을 말하자면 쉽지는 않았습니다 ㅋㅋ

부족한 실력에 어떤게 쉽겠냐만은, 사실상 코드를 두개나 짰네요

 

이번 미션에서는 콘솔 입력을 받아야하는 부분이 있었는데,

이 부분에서 바로 떠올랐던 점은

 

자바스크립트는 비동기적으로 작동하기때문에, 기능 자체에 콘솔 입력을 기다리도록 구현되어있어도 이 작업을 기다려주지 않습니다.

CodeRunner로 굴려봤는데 return값이 계속 undefined인거 보고 이 부분은 바로 생각이 났습니다.

 

당연히 저는 그 다음으로 생각한게 async, await를 사용하자~ 였고

async await을 사용하여 입력을 받아온 뒤, 받아온 데이터를 바탕으로 스트라이크 볼 계산하면서 쉽게 가는듯 했습니다..만

 

테스트코드를 계속 실패하면서 의문을 갖게 되었습니다.

계속 실패하면서 든 생각이 "왜 계속 안되는거지? 입력이라도 잘못 받아온건가?" 해서 계속 콘솔로 찍으면서 확인해봤는데

입력 자체는 잘 들어갔습니다.

 

곰곰히 생각해보니 Test코드는 Jest로 되어있었고, 제가 Jest 테스트파일을 따로 읽어보진 않았다는걸 떠올렸습니다.

그래서 그 즉시 기능을 만지작거리는 걸 중단하고 Jest 코드 분석에 들어갔습니다

 

구글링을 열심히 해보면서 스택오버플로우도 여럿 뒤진 결과

Async await 사용시 Jest 테스트파일 자체에 수정이 필요하다는 것을 알게 되었습니다.

Testing Asynchronous Code · Jest (jestjs.io)

 

Testing Asynchronous Code · Jest

It's common in JavaScript for code to run asynchronously. When you have code that runs asynchronously, Jest needs to know when the code it is testing has completed, before it can move on to another test. Jest has several ways to handle this.

jestjs.io

 

당연히 Jest 파일을 수정하면 안되니까, 이 문제 자체의 목적이 콜백함수의 응용이라는 것을 그때서야 알았습니다

 

덕분에 코드 흐름 자체를 다 짜놓고 대대적인 수정을 했습니다. (이래서 코드를 거의 두개 짰습니다)

문제의 의도는 당연히 요구사항에도 있겠지만, 관련 테스트파일에도 있을 수도 있다는 점을 간과했었네요

 

물론 Jest 파일을 분석하면서, Jest의 사용 목적, Jest의 장점 및 작성방법 등..

우테코 뿐만이 아니고 앞으로 제가 앞으로 자바스크립트를 계속 하면서 매우 큰 도움이 될거라고 생각이 들었습니다.

 

아무튼 콜백함수 응용해서 잘 짜서 테스트도 통과했고 제출도 잘 했는데

제출할 때 두가지 아쉬운점이 있었다면,

(물론 제출하고 난 다음, 다른 분들 코드와 비교했을 때 아쉬운 점은 셀수 없이 많습니다 ㅋㅋ)

1. Jest 테스트중 실행중인 작업이 있어 Jest가 종료되지 않았다는 오류를 해결하지 못하고 제출했다는 점 입니다.

 

이 부분은 차후 리팩토링으로 반드시 고쳐볼 예정입니다.

 

2. Jest에 익숙하지 않아서, Jest를 적극적으로 사용하지 못했다.

Jest를 굳이 쥐어주고 해 보라고 했던건, 테스트케이스를 작성하면서 문제를 해결해나가라는 의도였던 것 같은데

그냥 아무생각없이 코드러너로 돌려버렸으니, 이 의도에 맞추어서 문제를 해결해 나가지 못한 부분이 아쉽습니다.

다음 미션부터는 적극적으로 Jest를 사용하면서 문제를 해결해나갈 예정입니다.

그냥 적당히 스트라이크 테스트만 했지요..


제출하고 나서 다른분들 코드를 보니, 파일을 분리하여 작성하시는 방법을 많이 쓰셨는데

그냥 짜기에 급급해서 파일을 나눌 생각조차 못했네요 ㅋㅋ

하지만, 잘 하는 분들 코드를 보다보니 제가 앞으로 어떤 방향으로 나아가야 할 지는 깨달을 수 있었던 것 같습니다.

 

커밋 날리는것도 다른분들이 feat, docs 이렇게 나눠서 커밋하시길래 따라했는데

기능구현해서 커밋한거 말고 코드를 다듬는 과정도 feat로 커밋했는데, 이 부분은 refactor로 해서 커밋을 날려주는게 더 이해하기 쉽겠더라구요

 

커밋 메시지도 어떻게하면 더 보기 좋은지, 어떻게하면 더 깔끔하게 코드를 짤 수 있는지 고민하게 된 일주일이었습니다.

좋은 일주일이 된 것 같아 기분이 좋네요 :)