우아한테크코스 5기 프리코스 2주차 회고
벌써 프리코스의 반이 끝났다! 3주차 미션을 진행하기 전 회고부터 해보려 한다.
이번 주차도 어김없이 과제 하나를 받았다.
"숫자 야구 게임"
사실, 프리코스 시작 전에 숫자 야구 게임을 구현해보았다. 작년 프리코스 때도 이 과제가 있었기 때문에 연습삼아 풀었었다.
하지만, 프리코스 과정에서 직접 과제를 받고 구현을 해보니 이전과 많이 다르게 진행했다는 걸 알 수 있었다. 성장했나...?
기능 목록 작성
처음에 기능 목록을 작성했을 때에는 숫자 야구 게임을 할 수 있는 App 클래스에 모든 기능이 들어가도록 했다. 그리고 play 메서드를 제외한 다른 메서드들은 private 메서드로 구현했다.
테스트까지 완료했지만, 이번 과제는 저번 과제와 다르게 클래스로 구현하는 문제였기 때문에, 조금 더 객체 지향적으로 작성을 해야겠다는 생각이 들었다.
그래서 기능 목록을 다시 갈아 엎었다!
나는 게임을 진행하는 Player와 Computer, 그리고 이 게임을 진행하는 Referee로 클래스를 나누었다.
클래스를 다룬 적이 별로 없어서 어색했지만, 이번 기회에 이것저것 해보면서 익힐 수 있었다.
제출일인 화요일, 로컬에서 테스트도 완료하고 PR을 올려 우테코 지원 플랫폼에 제출을 했다.
그리고...
왜 안되지!? 계속 테스트 실행 버튼을 눌러도 오류가 떴다.
원래 틀렸으면 '예제 테스트 결과: 0/2'로 나올텐데, 저렇게 나오니 서버 문젠가? 내 문젠가? 하면서 내 코드를 뜯어보며 리팩토링했다.
7시에 친구들과 약속이 있었는데, 5시 부터 이 오류 때문에 결국 약속도 취소하고 해결하려 애를 썼다.
점점 제출 마감 시간은 다가오고, 아무리 리팩토링을 해도 달라지는게 없어 넋이 나가 있었다.
이제 끝인건가... 너무 쉽게 생각한건가... 체념하다가 마지막으로 다시 코드를 새로 구현한다는 마음으로 요구사항을 뒤져보았다.
그러다 이걸 발견했다.
과제에서 MissionUtils 라이브러리의 Console을 통해 입출력을 해야하는 조건이 있었다.
입출력은 readLine과 print로 잘 구현했지만, 마지막에 게임이 종료될 때 **Console.close()**를 하지 않았었다!!
마지막 커밋이라고 생각하고 기도하면서 테스트 버튼을 클릭한 결과...

5시간 만에 드디어 성공!!ㅠㅠㅠ
처음 기능목록을 작성할 때도 이 문서를 봤지만 대수롭지 않게 생각하고 넘겨짚었던 것이 큰 실수였다.
제출 마감까지 2시간이 남아 부랴부랴 소감문을 작성하고 그제서야 한숨 돌릴 수 있었다..
친구들아 약속 파토내서 미안...!!
요구 사항 천천히, 꼼꼼하게, 사소해보이는 것 하나까지
피어 리뷰
2주차가 끝나고, 참가자분들과 피어 리뷰를 했다.
각자 짠 코드들은 자신의 기준에서 최선의 코드일 테지만, 완벽한 건 없기 때문에 더 나은 방향으로 리팩토링할 수 있는 부분이 생기기 마련이다.
다른 사람들의 코드를 리뷰하면서 많이 배울 수 있었다.
- static 메서드
- 추상 클래스
- 예외 처리
- 유닛 테스트
- for문 보단 forEach문
- ++, -- 피하기 등등...
내 코드에 대해 리뷰해주신 분들의 피드백을 받고 리팩토링을 진행할 수 있었다.
다들 너무 친절하게 설명해주시고 생각지도 못한 부분의 오류를 알려주어서 도움이 많이 되었다.
피어 리뷰 짱👍👍
3주차를 시작하기 전에 Airbnb의 JavaScript 컨벤션 문서를 정독해서 클린 코드를 작성해야겠다!
Airbnb JavaScript Style Guide() { A mostly reasonable approach to JavaScript airbnb.io
'회고' 카테고리의 다른 글
[회고] TIL을 스터디처럼 운영해보기 (0) | 2023.07.04 |
---|---|
[회고] 우아한테크코스 5기 프리코스 1주차 (0) | 2022.11.04 |