우테코 프리코스 3주차 과제 회고

신혜린·2023년 11월 19일
0
post-thumbnail

🔗 깃허브 주소


https://github.com/woowacourse-precourse/javascript-lotto-6/pull/266


💡 고민하고 새로 배운 내용


1. JavaScript 클래스(객체) 활용

이번 과제를 진행하면서 클래스(객체)를 분리하는 방법과 그 중요성에 대해 깊게 이해하게 되었습니다. 처음에는 어떻게 클래스를 분리해야 할지, 또 어떻게 다른 클래스로 불러와야 하는지 헤맸었습니다. 하지만 객체 분리에 대한 이해를 높이기 위해 이미 작성된 코드와 다른 예시를 참고하면서, 비슷한 기능을 수행하는 메소드를 묶는 것이 코드 모듈화와 재사용성을 증가시키는 중요한 요소임을 깨달았습니다.
예를 들어, LottoMachine.js, User.js, 또는 Input.js / **Output.js**와 같이 특정 역할을 하는 메소드들을 하나의 클래스로 분리해 두면 코드를 모듈화하고 쉽게 재사용할 수 있게 됩니다. 이렇게 모듈화된 클래스는 코드를 작성하는 동안 필요한 기능을 추가하거나 확장하는 데 매우 용이했습니다. 각 클래스를 독립적으로 테스트하고 유지보수할 수 있으므로 코드 개선 및 오류 수정이 간편해졌으며, 이렇게 모듈화된 구조를 따르면 코드의 가독성도 향상되고, 각 메소드와 클래스가 수행하는 역할을 명확하게 표현할 수 있다는 것을 깨닫게 되었습니다.
코드를 모듈화하여 작성하다 보니 자연스레 가독성에 대한 욕심이 생기게 되었습니다. 변수명을 명확하게 지으면 코드를 처음 보는 사람도 빠르게 이해할 수 있을 것이라 생각되어 평소보다 더 신경을 써가며 변수명을 짓는 저 자신을 발견할 수 있었습니다.

2. Lotto.js 를 통해 깨달은 점

주어진 Lotto.js 코드를 통해 유효성 검사 또한 객체로 따로 분리하여 사용할 수 있다는 것을 알게 되었습니다. 이를 활용하기 위해 validators 라는 새로운 폴더를 작성하여 유효성 검사 기능만을 위한 파일들을 추가했습니다.
특히 이번 과제에서 ApplicationTest.js 에서 받아오는 입력값들이 숫자처럼 생긴 문자열인 경우가 많았는데, 로또 번호와 사용자 입력 번호를 비교하기 위해서는 받아오는 입력값들이 배열이자 숫자 타입 요소여야 한다고 생각했기 때문에 입력값을 받아올 때마다 inputToNum 또는 inputToNumArr 라는 변수를 생성하여 타입 변형을 실행해야만 했습니다. 하지만 이러한 기능을 하나의 메소드로 묶어두고 필요할 때마다 재사용하니 코드가 훨씬 깔끔해지는 것을 확인할 수 있었습니다.

3. else 지양

이번 과제의 제한 사항 중에 else 사용을 지양하라는 내용이 있었습니다. 늘 if 를 사용할 때 짝꿍처럼 따라다녔던 else 를 사용하지 말라고 하니 처음에는 의아했습니다. 하지만 else 를 사용하지 않고 작성된 코드들을 살펴보았더니, if~else 를 사용할 땐 늘 {} 도 함께 사용했는데 if 만 사용할 경우에는 한 줄만으로도 바로 작성할 수 있어 확실히 코드가 더 깔끔하고 이해하기 쉽다는 것을 알게 되었습니다.

🔆 느낀 점


1, 2주 차 과제에 비해 확연히 어려워진 3주 차 과제 때문에 꽤 많은 시간을 쏟게 되었습니다. 이번 과제에서는 요구되는 기능 사항들이 전에 비해 많았고, 그렇기 때문에 구현해 내야 하는 알고리즘도 복잡할 수밖에 없었습니다. 처음에는 어떤 식으로 알고리즘을 구현해야 할지 머리에 그려지지 않아 직접 손으로 작성해 보며 이해하려고 노력했습니다.
애써 코드를 작성하고 테스트를 실행해 보아도 자꾸 에러가 뜨고 실패하는 테스트 내역들을 보면서 좌절하기도 했으나, 포기하지 않고 어디서부터 뭐가 잘못된 건지 파악하기 위해 끊임없이 console.log 를 찍어보는 등, 끝까지 과제에 임하고자 했습니다.
하루 종일 의자에 앉아 있다 보니 허리가 끊어질 것 같다는 생각도 들었지만 밤을 새워가며 코딩에 몰두하는 저 자신을 보며 열정이 없다면 이렇게까지는 하지 못할 것이란 생각이 들었습니다.
우테코 홈페이지 제출 후 테스트 코드가 통과 되었다는 것을 확인했을 때 느낀 성취감은 "이번 주차도 무사히 극복했구나!" 하며 자신을 북돋을 수 있게 해주었으며, 점점 난도가 올라가는 과제 탓에 4주 차 과제 또한 더욱 어려울 것으로 예상되지만 끝까지 포기하지 않고 성장하기 위해 노력해야겠다고 다짐하게 되는 계기가 되었습니다.

profile
개 발자국 🐾

0개의 댓글