Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[로또] 김진우 미션 제출합니다. #400

Open
wants to merge 19 commits into
base: main
Choose a base branch
from

Conversation

Jinviz
Copy link

@Jinviz Jinviz commented Nov 4, 2024

javascript-lotto-precourse

🏫 우아한테크코스 7기 프리코스 3주차 미션: 로또 발매기

학습 목표

  • 관련 함수를 묶어 클래스를 만들고, 객체들이 협력하여 하나의 큰 기능을 수행하도록 한다.
  • 클래스와 함수에 대한 단위 테스트를 통해 의도한 대로 정확하게 작동하는 영역을 확보한다.
  • 2주 차 공통 피드백을 최대한 반영한다.

📝 요구사항분석

입력

  • 로또 구입 금액 입력 받기
  • 로또 당첨 번호 입력 받기
  • 보너스 번호 입력 받기

출력

  • 당첨 통계 출력
  • 총 수익률 출력

로또

  • 랜덤한 6개의 숫자 발행
  • 로또 당첨 번호와 구매한 로또 번호 비교하여 일치 개수 산출
  • 보너스 번호와 로또 번호 일치 여부 저장
  • 구매 금액과 총 당첨 금액을 비교하여 수익률 계산

⚠️ 예외처리

입력 예외 처리

입력 예외 처리

  • 구입 금액이 1000의 배수가 아닐 경우: 구입 금액은 1000원 단위여야 하며, 1000으로 나누어 떨어지지 않으면 예외 발생.
  • 구입 금액이 숫자가 아닐 경우: 구입 금액 입력 시 숫자만 허용되며, 문자열 등 숫자가 아닌 값이 입력되면 예외 발생.

로또 번호 입력 예외 처리

  • 로또 번호의 개수가 6개가 아닐 경우: 로또 번호는 반드시 6개여야 하며, 그 이상 또는 이하일 경우 예외 발생.
  • 로또 번호에 중복된 숫자가 있을 경우: 각 로또 번호는 중복되지 않아야 하며, 중복된 번호가 있으면 예외 발생.
  • 로또 번호가 1에서 45 사이의 숫자가 아닐 경우: 모든 로또 번호는 1부터 45 사이에 있어야 하며, 범위를 벗어나는 숫자가 포함될 경우 예외 발생.
  • 로또 번호가 숫자가 아닌 경우: 로또 번호 입력 시 숫자만 허용되며, 문자열 등 숫자가 아닌 값이 포함되면 예외 발생.

보너스 번호 입력 예외 처리

  • 보너스 번호가 1에서 45 사이의 숫자가 아닐 경우: 보너스 번호는 1부터 45 사이의 숫자여야 하며, 이 범위를 벗어날 경우 예외 발생.
  • 보너스 번호가 당첨 번호와 중복될 경우: 보너스 번호는 당첨 번호와 중복되지 않아야 하며, 당첨 번호에 포함된 경우 예외 발생.

기타 로또 로직 예외 처리

  • 로또 번호와 당첨 번호 비교: 로또 번호와 당첨 번호를 비교하여 일치하는 번호 수를 산출하고, 보너스 번호와도 일치 여부를 확인.

✅ 체크리스트

  • 클래스 설계와 구현, 메서드 설계와 구현 같은 상세한 내용은 기능 목록에 포함하지 않았는가?
  • JavaScript Code Conventions 을 준수하였는가?
  • 한 메서드에 오직 한 단계의 들여쓰기만 허용했는가?
  • 함수(또는 메서드)의 길이가 15라인은 넘어가지 않았는가?
  • else 예약어를 쓰지 않았는가?
  • 모든 원시값과 문자열을 포장했는가?
  • 3개 이상의 인스턴스 변수를 가진 클래스를 구현하지 않았는가?
  • getter/setter 없이 구현했는가?
  • 메소드의 인자 수를 제한했는가?
  • 코드 한 줄에 점(.)을 하나만 허용했는가?
  • 메소드가 한가지 일만 담당하도록 구현했는가?
  • 클래스를 작게 유지하기 위해 노력했는가?
  • 3항 연산자를 사용하지 않았는가?
  • AngularJS Commit Conventions 에 맞춰 Commit Message를 작성했는가?
  • 이름을 축약하지 않고 의도를 잘 드러냈는가?
  • Jest를 활용해 테스트 코드로 작동을 확인했는가?
  • 구현한 기능에 대한 단위 테스트를 작성하였는가?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant