안녕하세요 공공돌🧸 입니다!!
이번에는 3주차 회고록을 작성해보려 합니다.
미션 진행 전 공부
1. 함수 분리
피드백을 받은 후 먼저 이전 미션 코드를 검토하며 함수 분리를 진행시켰습니다.
또한, 주간 피드백에서 함수 분리에 대한 지적이 계속 나왔기 때문에 함수 분리에 대한 고민을 하며 관련 정보를 검색하고 온라인 영상을 찾아 공부했습니다.
2. 클래스 분리, MVC 패턴 적용
[10분 테코톡] 제리님의 MVC 패턴 을 통해 공부하고, 이에 대해 블로그에 정리하며 다시 한번 복습하는 과정을 가졌습니다.
MVC 패턴
안녕하세요 공공돌🧸 입니다 !! 오늘은 MVC란 무엇인지에 대해서 알아보겠습니다. 제가 알고 있던 MVC 패턴이란 Model, View, Controller로 나누어서 코딩을 한다는 정도로 알고 있었지만, 이번 3주 차
sheep1sik.tistory.com
3. 테스트를 작성하는 연습
피드백에 올라와 있는 학습 테스트를 통해 테스트 코드에 대해 배우고 연습하였습니다.
![](https://blog.kakaocdn.net/dn/bAjO4l/btsCzJ2c4sp/JkoPvTt5TZSKrcW5u55cc1/img.png)
미션 진행
3주차 미션은 로또 미션이였습니다.
![](https://blog.kakaocdn.net/dn/baYmpf/btsCCyFRHFJ/QBo5SxSMiSxgQAQGBWKTtK/img.png)
![](https://blog.kakaocdn.net/dn/pn9SM/btsCBNQAI10/eXdouTEZDkVp3YoFbptng1/img.png)
자세한 내용은 아래 깃허브를 참고해주세요.
GitHub - Sheep1sik/kotlin-lotto-6: 로또 미션을 진행하는 저장소
로또 미션을 진행하는 저장소. Contribute to Sheep1sik/kotlin-lotto-6 development by creating an account on GitHub.
github.com
기능 정리
미션 진행 전 구현할 기능에 대해 아래와 같이 정리를 했습니다.
💡 구현할 기능
- [X] 게임 진행 멘트를 출력할 출력문
- [X] 로또 구입 금액을 입력받는다
- [X] 만약 사용자가 입력을 잘못하면 예외처리와 함께 [ERROR] 메세지 출력 후 재입력
- [X] 로또 구입 금액이 1000원으로 나누어 떨어지지 않는 경우 예외처리 **( [ERROR] 입력된 금액이 1000원 단위가 아닙니다. 1000원, 2000원, 3000원과 같이 1000원 단위로 입력해 주세요. )**
- [X] 로또 구입 금액에 문자가 포함되었다면 예외처리 **( [ERROR] 입력값에 숫자 이외의 문자가 포함되어 있습니다. 숫자만 입력해 주세요. )**
- [X] 번호가 입력되지 않을시 예외처리 **( [ERROR] 입력되지 않았습니다. 다시 입력해주세요. )**
- [X] 나누어 떨어진다면 몫을 저장 (구매 갯수)
- [X] 구매 갯수(구입 금액과 1000원을 나누어 떨어진 몫)만큼 로또의 랜덤 숫자를 생성한다.
- [X] 로또의 랜덤 숫자(1~45)를 부여한다
- [X] 로또의 랜덤 숫자를 오름차순으로 정렬한다.
- [X] 랜덤 로또번호를 저장한다.
- [X] 당첨 번호를 입력 받는다. 이때 당첨 번호는 쉼표를 기준으로 구분한다.
- [X] 입력된 당첨 번호를 검증한다.
- [X] 만약 사용자가 입력을 잘못하면 예외처리와 함께 [ERROR] 메세지 출력 후 재입력
- [X] 6개 미만이거나 6개 초과일시 예외처리 **( [ERROR] 6개의 숫자만 입력해 주세요. )**
- [X] 당첨 번호가 1~45까지 포함이 안되면 예외처리 **( [ERROR] 숫자의 범위는 1 ~ 45까지 입니다. 숫자의 범위에 맞게 입력해주세요. )**
- [X] 중복일시 예외처리 **( [ERROR] 번호에 중복된 숫자가 포함되어 있습니다. 숫자가 중복되지 않게 입력해주세요. )**
- [X] 번호가 입력되지 않을시 예외처리 **( [ERROR] 입력되지 않았습니다. 다시 입력해주세요. )**
- [X] 보너스 번호를 입력 받는다.
- [X] 만약 사용자가 입력을 잘못하면 예외처리와 함께 [ERROR] 메세지 출력 후 재입력
- [X] 보너스 번호가 당첨 번호랑 중복이 되는지 확인한다.
- [X] 중복일시 예외처리 **( [ERROR] 당첨 번호랑 보너스 번호는 서로 중복되면 안됩니다. )**
- [X] 번호가 입력되지 않을시 예외처리 **( [ERROR] 입력되지 않았습니다. 다시 입력해주세요. )**
- [X] 1등 - 5등 까지의 조건이 일치하는지 확인한다.
- [X] 각 조건에 맞는 변수에 저장한다.
- [X] 당첨 통계를 출력한다.
- [X] 수익률을 출력한다.
- [X] 수익률을 계산한다. ( 수익률은 소수점 둘째 자리에서 반올림한다. )
![](https://blog.kakaocdn.net/dn/b0La9F/btsCEJAoECT/DtJijaRh51vLOkNaybhisK/img.png)
구현
아래 링크를 통해 확인할 수 있습니다.
GitHub - Sheep1sik/kotlin-lotto-6: 로또 미션을 진행하는 저장소
로또 미션을 진행하는 저장소. Contribute to Sheep1sik/kotlin-lotto-6 development by creating an account on GitHub.
github.com
개인 피드백
1. 제출 전 확인...
![](https://blog.kakaocdn.net/dn/bA8H8E/btsCzt6nH8Y/dXrJULKmyelQLHK7lvJ6F1/img.png)
지금 보면 view가 이상한 걸 볼 수 있습니다 HAHA.. 맞아요.. 오류가 발생한 거 체크하면서 옮겼던걸 안 바꿨네요..
이런 나 자신 아주 자랑스럽네 ^__^
체크를 여러 번 하는 습관을 들여야 될 것 같아요..📝
2.클래스(객체)를 분리하는 연습
객체를 분리하는 과정에서도 세세하게 분리할 수 있다는 걸 코드 리뷰를 하면서 다른 분들의 분리 방법을 보고 깨달았습니다.
그중에서도 정말 잘했다고 생각한 지원자분이 계시는데 아래와 같이 단일 책임의 원칙을 지키시면서 클래스를 분리하셨더라고요..💬
![](https://blog.kakaocdn.net/dn/GLc46/btsCzSx41fq/JRT2FB5ubFo53k2ew9wMCK/img.png)
비교를 하자면 정말 초라한 코드이지만 작성한 코드를 보면서 SOLID 원칙에 대한 공부를 자세히 할 필요가 있다고 깨달았습니다.
3. 꼼꼼하지 못한 테스트 코드
이것도 1번 피드백과 같은 내용이지 않을까 생각이 드네요..
![](https://blog.kakaocdn.net/dn/oeZCP/btsCCw9aeQv/N1Unxq9oBt66wzKgYeMaj0/img.png)
테스트 코드에 요구 사항으로 도메인 로직에 대한 단위 테스트를 작성하는 연습에 대해 부합하지 못했나 라는 생각이 듭니다.
아래 추가로 공부해서 글 올려봤습니다 !
단위 테스트(Unit Test)
안녕하세요 공공돌🧸 입니다!! 이번에는 프리코스를 복기하면서 단위 테스트에 대해 부족함을 깨닫고 공부해봤습니다. 1. 도메인 로직이란? 도메인 로직은 소프트웨어 애플리케이션에서 특정
sheep1sik.tistory.com
느낀점
이번 미션은 실수투성이가 아니었나라는 생각이 듭니다. 하지만 이번 경험을 통해 구현 후에도 확인과 검증을 계속해야 된다는 중요성을 알았던 중요한 미션이 아닌가 생각이 들었습니다. 지금은 실수로 포장하지만 다음번에도 이런 일이 있다면 실력이겠죠?? 실력이 아닌 실수로 끝날 수 있게 끝까지 집중을 하려 합니다. 그리고 객체에 대한 분리와 도메인 로직에 대한 단위 테스트에 대해서 많이 알지 못하는 것 같습니다. 추가적인 공부를 통해 보완해 보겠습니다.
재구현
☁️ 재구현이 완료되면 올려보도록 하겠습니다 !! ☁️
공부하는 공돌이, 공공돌입니다🐻
@sheep1sik
'우테코 프리코스' 카테고리의 다른 글
[우테코 프리코스] 6기 안드로이드 2주차 회고록 (13) | 2023.12.05 |
---|---|
[우테코 프리코스] 6기 안드로이드 1주차 회고록 (4) | 2023.11.21 |