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

[로또] 김지환 미션 제출합니다. #386

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

Conversation

Turtle-Hwan
Copy link

javascript-lotto-precourse

기능 목록 - turtlehwan

  • 로또 구입 금액 입력 기능
    • 예외 : 정수가 아닌 숫자입니다.
    • 예외 : 정수가 1,000 미만입니다.
    • 예외 : 입력 받은 수가 1,000 단위가 아닙니다.
  • 로또 번호 발행 기능
    • 1~45 정수 숫자 범위 -> MissionUtils
    • 중복되지 않는 6개 숫자 발행 -> MissionUtils
  • 발행한 로또 수량 및 번호 출력 (오름차순)
  • 당첨 번호 입력 기능
    • 양의 정수 판별
    • 1~45 숫자 범위
    • 중복되지 않는 6개의 숫자 입력
  • 보너스 번호 입력 기능
    • 양의 정수 판별
    • 1~45 숫자 범위
    • 중복되지 않는 6개의 숫자 입력
  • 당첨 확인(등수 판별) 기능
  • 당첨 내역 확인 및 출력
  • 수익률 계산 및 출력
    • 소수점 둘째 자리에서 반올림

중점 사항

  • 값을 하드코딩하지 않고, 상수로 빼내서 정리하기
  • 메서드가 한 가지 기능을 하는지 확인하는 기준 세우기
    • 여러 메서드에서 중복되는 코드가 있으면 별도의 메서드로 분리
    • 해당 메서드를 변경할 때 서로 다른 이유로 변경하고 commit하는지 살펴보기
    • 안내 문구 출력, 사용자 입력 처리, 유효값 검증 등의 작업을 각기 다른 함수로 분리
  • class의 private 필드 잘 이용하기 (# 문법)
  • JavaScript에서 객체를 만드는 다양한 방법을 이해하고 사용하기
  • 기능별 단위 테스트 만들기
    • 테스트를 작성하는 이유에 대해 본인의 경험을 토대로 정리
    • 처음부터 큰 단위의 테스트를 만들지 않기

@Turtle-Hwan Turtle-Hwan force-pushed the Turtle-Hwan branch 2 times, most recently from 543c1a2 to 7a221c3 Compare November 5, 2024 04:04
Copy link

@ssilver01 ssilver01 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM
코드를 금방 구현하셨다고 들었는데 깔끔히 잘 한 것 같아요 !
다만 LottoVendingMachine에 너무 많은 로직이 들어가 있는 것 같아 이 부분만 분리를 하면 더 좋을 것 같습니다 ! 수고하셨습니다 ☺️

if (Number(number) < 1000) {
throw new Error(MESSAGES.ERROR.PREFIX + MESSAGES.ERROR.SMALL_INT);
}
if (number.slice(-3) !== "000") {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

방법은 되게 새로웠는데 로또 가격이 1000원이 아닐 경우 경우의 수가 많아지기 때문에 좋은 방법인진 모르네요..🤔
1000원 이외의 금액으로 바뀌었을 때 좋은 방법인지 고민해봐야될 것 같아요 ! 혹시 방법이 따로 있을까요?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그렇네요 이것도 일종의 매직 넘버처럼 보일 수 있어서 로또 금액을 상수화 한 다음에 불러와서 사용하는 것이 추후 확장성을 생각하면 저도 더 좋아 보여요!

Comment on lines 8 to +9
this.#validate(numbers);
this.#validateDuplicate(numbers);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

validate안에 validateIntsRange 는 validate안에 넣었는데 validateDuplicate를 따로 하신 이유가 있을까요?!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  1. validateIntsRange()는 number 배열이 아니라 파라미터로 하나의 숫자를 받아 검증하도록 해서였습니다
  2. 원랜 같이 넣으려다가 너무 함수가 길어져서 뺐습니다.
  3. 차라리 validate들을 더 분리하고 생성자에서 다 불러오는 것이 가독성 측면에서 더 좋아 보였는데 시간이 없었네요 :)

Comment on lines +136 to +137
Console.print("");
Console.print(MESSAGES.OUTPUT.WIN_RATE);

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

메세지 자체에 \n 넣어서 하면 더 깔끔할 것 같아요!

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.

2 participants