
이번 주차에는 예외 테스트 2개 중 1개를 실패해서 정말 아쉽게 마무리하게됐다. 이번 주 문제점을 파악하고 다음주엔 부족한 점을 모두 개선해보려고 한다 !
[https://github.com/woowacourse-precourse/java-lotto-7/pull/542](https://github.com/woowacourse-precourse/java-lotto-7/pull/542)
<hr>
## 3주차 [로또]
### 📌 프로젝트 소개
이 프로젝트는 **로또**를 구현합니다.
사용자가 입력한 **당첨 번호**와 시스템이 생성한 **당첨 번호**를 비교하며 로또 게임을 진행합니다.
- 로또 번호는 1~45 사이의 중복하지 않는 7개의 무작위 값을 통해 당첨 여부를 결정합니다.
- 로또 구입 금액을 입력하면 구입 금액에 해당하는 만큼 로또를 발행해야 합니다.
- 당첨 내역 및 수익률을 출력하고 로또 게임을 종료합니다.
- 잘못된 입력이 들어올 경우 **`IllegalArgumentException`**이 발생하며 애플리케이션이 종료됩니다.
<br>
### 🎯 기능 요구 사항
1. **로또 번호**
- 발행 횟수만큼 1~45 사이의 중복하지 않는 6개의 무작위 값을 뽑아 출력합니다.
2. **번호 비교**
- 구매한 로또 번호와 당첨 번호를 비교하여 당첨 개수를 기록합니다.
3. **당첨 결과**
- 당첨 내역 및 수익률을 출력합니다.
4. **예외 처리**
- 입력 값이 유효하지 않을 경우 **`IllegalArgumentException`**을 발생시키고 애플리케이션을 종료합니다.
<br>
### 📝 입출력 요구 사항
**입력**
1. 로또 구입 금액(1,000원 단위)
2. 당첨 번호(,로 구분된 6개의 중복되지 않는 1-45사이의 정수)
3. 보너스 번호(당첨 번호와 중복되지 않는 1-45 사이의 정수)
**출력**
- 구매한 개수 만큼의 6개의 로또 번호
- 당첨 통계(내역 및 수익률)
<br>
### 📌 3주차 미션 진행시 개선할 점
이번 구현에서 코드 리뷰와 공통 피드백을 통해 개선해야겠다고 느낀 부분:
- 계층형 아키텍처에 대해 학습
- 단위테스트하기
- 도메인에서 뷰를 직접적으로 참조하지 않도록 하기
- 매직넘버는 상수로 빼기
<br>
### 미션을 끝마친 후 소감
이번 미션이 가장 아쉬움이 많이 남았다..! 예외 테스트를 실패하기도 했지만, 매주 새롭게 코드를 발전시키면서 작성하고 있기 때문에 내가 지금 하고 있는게 잘 하는건가..? 이걸 여기에 작성하는게 맞나? 하는 의심을 계속 품으면서 코드를 작성했던 기억이 난다.
개선할 점이라고 작성헀던 부분들 중, 지키지 못해 아쉬웠던건 뷰를 컨트롤러에서 서비스랑 연결시켰어야 했는데, 서비스에서 뷰와 연결시켜서 너무 많은 책임을 두게 했던 것 같아서 그게 아쉽다!
그리고 매직 넘버를 상수로 빼보려고 했는데, 일관성이 없게 몇 개만 상수로 뺀게 적절하지는 않았던 것 같다. 다른 분들의 코드를 보니 정해진 값은 대부분 모두 상수로 빼서, 반성하게 됐고 상수 값들을 한 클래스에 정리해서 분리하는 것도 좋을 것 같다!
<br>
### 코드 리뷰를 하며 고쳐야겠다고 생각했던 점
- 예외 메시지나 정해진 값 모아서 정의해두기 (enum 활용해보기)
- 참조 자료형을 그대로 리턴하기보단, 복사한 리스트를 반환하는 방식을 사용하기 (방어적복사)
- 클래스의 내용에 맞게 이름 짓기& 클래스에서는 유사한 기능만 실행하도록 !
- 메서드에서 파라미터 값 변경하지 않기(불변 취급), 의미없는 코드 작성하지 않기
- 예외 처리 후 다시 입력받도록 구현하기
<br>
이번 4주차는 마지막인만큼 고쳐야겠다고 생각한 점들을 꼭 다 지켜보고싶다 !
'우아한 테크코스 프리코스' 카테고리의 다른 글
| [우테코 프리코스 BE] 2주차 회고록 (0) | 2025.02.26 |
|---|---|
| [우테코 프리코스 BE] 1주차 회고록 (0) | 2025.02.26 |