Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

javascript-lotto-precourse

리뷰어들을 위한 설명

기능

당첨 내역 및 수익률을 출력한다.

목표

  • 의도를 파악할 수 있는 네이밍
  • class의 메소드들은 class의 이름에 맞는 역할을 해야한다.
  • 함수 || 메서드가 indent 2이하, 15라인이 넘지 않도록 주의한다.
  • 각 함수 || 메서드들이 하나의 역할을 해야한다.
  • MVC 패턴에 따른다.
    • Model/ View 의 분리를 명확히 해 싸이클이 돌지 않도록 주의해야한다.
    • Controller에서 Model -> View, View -> Model 을 관리한다.
    • 가독성이 좋은 코드가 목표다.
    • 오버 엔지니어링에 주의한다.

입력

  • 로또 구입 금액 1000원으로 나눠 떨어져야한다.
    • 가능한 케이스
      • 숫자
      • 천 단위 구분자
    • 아니라면 예외처리
      • 예외 케이스
      • 금액을 , 를 포함할시
      • 의미있는 ,라면 숫자로 바꿔준다,
      • 이상하다면 에러처리를 한다.
      • Number.isNaN 사용해 숫자가 아닌 문자일 시 에러처리.
      • 아직안함
        "."이 들어갔을때 ,,일부러 넣었다고 생각해야할지 고민이다.
        • 1000.00
  • 당첨 번호 입력 받아야한다.
    • 당첨번호는 6개여야한다.
    • 쉼표를 기준으로 구분되어야한다.
    • 쉼표가 없거나 || 당첨번호의 개수가 6이 아니라면 에러처리
    • 당첨 번호는 각각 다른 숫자여야한다.
  • 보너스 번호를 입력 받는다.
    • 당첨 번호와 일치 하지 않아야한다.
  • 로또 번호는 1부터 45 사이의 숫자여야한다. 아니라면 예외처리

과정

  • lotto class는 로또 관련된 기능만 수행하도록한다.
    • 발행한 로또 수량 및 번호 return
    • 당첨 내역 확인 데이터
  • 입력받은 로또 구입 금액으로 발행한 로또 수량을 구한다.
  • 로또 수량 N개의 티켓을 뽑는다. (숫자가 6개인 티켓)
  • 저장한 내용을 참고해 총 수익 금액을 계산한다.
  • 수익률을 계산한다
    • (당첨 금액) / (구입 금액) * 100
    • 소수점 둘째 자리에서 반올림 한다. [ ]출력시에는 뒤에서부터 +3만큼 가서, 를 넣어야한다.

출력

  • 발행한 로또 수량

    • ~개를 구매했습니다.
  • 로또 N개들 , 각각 번호들 출력한다.

    • 로또 번호들은 오름 차순으로 정렬해 보여줘야한다.
  • 당첨 내역을 출력한다. 예시

    3개 일치 (5,000원) - 1개
    4개 일치 (50,000원) - 0개
    5개 일치 (1,500,000원) - 0개
    5개 일치, 보너스 볼 일치 (30,000,000원) - 0개
    6개 일치 (2,000,000,000원) - 0개
    
    
  • 수익률을 출력한다.

  • 소수점 둘째 자리에서 반 올림한다.

프로그래밍 요구 사항

  • indent 3이 넘지 않도록 구현한다.
  • 함수가 한가지일만 하도록 최대한 작게 만들어라.
  • jest를 이용하여 테스트 코드를 구현한다.
  • 함수 또는 메서드의 길이가 15라인을 넘어가지 않도록 구현한다.
  • 단위 테스트 작성이 익숙하지 않다면 LottoTest를 참고해 학습한 후 테스트를 작성한다.
  • Lotto 클래스를 사용해 구현해야한다.

리팩토링

  • Lotto와 User Controller 로 분리한다.

    • Lotto

      • 당첨 숫자 6개의 숫자가 각각 다른지 확인한다.
      • N개의 로또 발행
      • 당첨 숫자 및 보너스 볼과 N개 일치 하는지 확인
      • N개 일치- J개 결과 return

    -User

    • M원 -> N개

    • 당첨 결과 -> 총 상금액

    • 총 상금액 -> 총 수익률

    • Controller

      • Lotto와 User 영향을 받는 전체 로또 시스템을 구현한다.
  • App run의 함수가 너무 길다 . 15줄이 지나가지 않도록 주의하자

  • FIRST, SECOND 와 같은 등수를 나타내는 문자열을 하드코딩 하지 않는다.

  • 로또 경기에 대한 정보를 한 객체에서 관리한다.

  • 네이밍을 역할과 의도르 알 수 있게 맞게 수정하자.

  • 문자열과 숫자 값을 하드코딩 하지 않고, 변수로 선언한다.

  • 에어비엔비 JS 컨벤션에 따랐는지 확인한다.

  • 테스트코드를 작성한다.

  • bonusNumber을 winningNumber과 같은 취급을 할 것인지 일관성 유지할 것

실행 결과

구입금액을 입력해 주세요.
8000

8개를 구매했습니다.
[8, 21, 23, 41, 42, 43]
[3, 5, 11, 16, 32, 38]
[7, 11, 16, 35, 36, 44]
[1, 8, 11, 31, 41, 42]
[13, 14, 16, 38, 42, 45]
[7, 11, 30, 40, 42, 43]
[2, 13, 22, 32, 38, 45]
[1, 3, 5, 14, 22, 45]

당첨 번호를 입력해 주세요.
1,2,3,4,5,6

보너스 번호를 입력해 주세요.
7

당첨 통계
---
3개 일치 (5,000원) - 1개
4개 일치 (50,000원) - 0개
5개 일치 (1,500,000원) - 0개
5개 일치, 보너스 볼 일치 (30,000,000원) - 0개
6개 일치 (2,000,000,000원) - 0개
총 수익률은 62.5%입니다.

예상되는 예외 케이스

금액

1,000
10000
10040
1,00,00
1,00$00
1.2000

6가지의 숫자

1,2,3,4,5,6
1,2,3,4,5,36
1,2,3,4,5,50
1,2,3,%
1,   2,3,%
1.23.4,2
 -1/2,3
 -1,,2,3

보너스 숫자

당첨 금액과 중복되는 경우
음수일 경우
범위가 <0 ||>45
$
짱 큰 숫자라서 문자열을

9007199254740991n

Lotto

  • 기능

[x]로또 번호의 개수가 6개가 되지않으면 예외가 발생한다.
[x]로또 번호에 중복된 숫자가 있으면 예외가 발생한다.
[x]유효한 번호로 Lotto 인스턴스를 생성해야 한다.
[x](사용자가 구매한 티켓의 양) 지정된 수의 티켓을 생성해야 한다.
[x]일치 수에 따라 순위 카운트를 올바르게 업데이트해야 한다.
[x] 5개 일치 한 로또는 보너스 볼 일치까지 검사한다.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages