3주차 과제를 하기에 앞서 메일을 통해 받은 2주차 공통 피드백을 꼼꼼히 살펴보고자 했습니다.
제 자신이 올바른 방향으로 성장해 나아가고 있는지 객관적으로 확인하고 싶었기 때문입니다.
아는 내용이 있어도 복습한다는 마음가짐으로, 구글 docs로 이루어진 2주차 공통 피드백과 추가 학습 자료 전부를 면밀히 살펴보고 학습했습니다. 그리고, 헷갈리거나 새로 배운 내용 중심으로 아래 게시글에 정리했습니다.
https://jinmidnight.tistory.com/38
우아한 테크코스 6기: 프리코스 2주차 Front-End 피드백 정리
우아한 테크코스 6기 프리코스 2주차 과제에 대한 공통 피드백이 주어졌다. 프리코스 3주차 과제를 하기에 앞서, 더 나은 과제 수행을 위해 해당 피드백을 꼼꼼히 살펴보며 정리하고자 한다. 2주
jinmidnight.tistory.com
3주차 과제 코드
https://github.com/woowacourse-precourse/javascript-lotto-6/pull/646
[로또] 박진효 미션 제출합니다. by jinmidnight01 · Pull Request #646 · woowacourse-precourse/javascript-lotto-6
github.com
메일에서 강조했던
- 클래스(객체)를 분리하는 연습
- 도메인 로직에 대한 단위 테스트를 작성하는 연습
를 중심으로 구현하고자 했습니다.
1. 클래스(객체)를 분리하는 연습
1주차부터 해오던 방식대로, MVC를 기반으로 구현을 진행했습니다. develop 브랜치에서 주작업을 했고 기능별로 commit했습니다. 최종적으로, App.js의 play 메소드에 MVC를 전부 취합하여, 전체적인 로직을 구현했습니다.
우선 Models에서 구매자 정보 class와 보너스 번호가 포함된 로또 정보 class를 구현하고자 했습니다. 두 class에서 필드별로 필요한 유효성 검사 및 예외처리를 할 수 있는 함수를 구현했습니다. 구체적으로, 구매자 정보 class에서는 구입 금액, 로또 개수, 소유한 로또 번호 목록을 필드값으로 구현했습니다. 로또 정보 class에서는 기존에 주어진 Lotto 클래스 객체, 보너스 번호를 필드값으로 구현했습니다.

예외처리는 별도의 Validations 클래스를 생성하여 작업했습니다. 로또 구입 금액, 사용자의 로또 번호 목록, 6자리의 로또 당첨 번호, 1자리의 보너스 번호에 대한 예외 처리 기준을 세부적으로 세웠습니다. 과제 명세서에 나와있지 않은 부분은 일반적이라고 생각하는 기준으로 나누어 구현했습니다. 예외 처리 기준에 공통적인 함수들이 구현될 수 있다고 판단하여, Validations 클래스를 만들어 재사용성을 높였습니다. 에러 메세지는 Constants 폴더에 Errors.js 파일을 따로 만들어 상수화하여 사용했습니다.

Views에서는 InputView 클래스와 OutputView 클래스로 나누어 구현했습니다. 입력과 관련한 함수들은 전부 InputView에, 출력과 관련한 함수들은 전부OutputView에서 관리했습니다.

Controllers에는 로또 게임 처리/연산 class를 생성하여 프로그램 내부적으로 연산/처리해야 하는 함수들을 구현했습니다. 한 함수에 구현해야 할 기능들이 많아질 경우, 여러 함수들로 세분화하여 작업했습니다.

2. 도메인 로직에 대한 단위 테스트를 작성하는 연습
도메인 로직에 대한 단위 테스트는 최대한 세분화하여 작업했습니다.
우선, 예외처리에 관한 테스트를 파일별로 나누어 구현했습니다. 해당 파일들에서 jest를 활용하여, 예상되는 값과 실제값을 비교하는 방식으로 테스트 코드를 작성했습니다. 또한, 사용자 로또 번호 목록 테스트에서는 mockRandom 함수를 이용하여, 랜덤으로 생성되는 값을 고정하였습니다.

다음으로, 결과 출력과 관련한 테스트를 파일별로 나누어 구현했습니다. 해당 파일들에서도 jest를 바탕으로, 최대한 많은 경우를 나누어 결과가 예상대로 잘 출력되는지 확인하였습니다.

3. 소감
현재 우테코 프리코스의 절반 이상이 지난 시점인데, 짧은 시간동안 빠르게 성장한 것을 느낄 수 있었습니다. 매번 부족한 점을 느꼈고, 다음 과제에서 부족한 점을 메꾸기 위해 고민하는 과정들이 유의미했던 것 같습니다.
이번에도 똑같이 부족한 점을 느꼈는데, 테스트 케이스를 작성할 때 input 값을 랜덤으로 작성하고 비교할 수 있는 방법에 대해 알아보고 싶다는 생각을 했습니다.
또한, 클래스나 함수를 만들 때 변수 이름을 더 명확하고 깔끔하게 짓는 방법에 대해 더 알아보고 싶다는 생각을 했습니다.
마지막 과제에서는 지금까지 고민하고 피드백 받았던 내용들을 전부 종합하여, 잘 마무리하고 싶다는 생각을 했습니다. 뿐만 아니라, 쉽게 얻기 힘든 실무와 비슷한 경험들을 해올 수 있었다는 것에 다시 한 번 감사함을 느꼈습니다.
'Javascript' 카테고리의 다른 글
우아한 테크코스 6기: 프리코스 4주차 후기 (0) | 2023.11.15 |
---|---|
우아한 테크코스 6기: 프리코스 3주차 Front-End 피드백 정리 (0) | 2023.11.12 |
우아한 테크코스 6기: 프리코스 2주차 Front-End 피드백 정리 (0) | 2023.11.08 |
우아한 테크코스 6기: 프리코스 1주차 Front-End 피드백 정리 (0) | 2023.10.31 |
우아한 테크코스 6기: 프리코스 2주차 후기 (0) | 2023.10.31 |