Skip to content

Conversation

@hjlee83
Copy link

@hjlee83 hjlee83 commented Nov 20, 2025

No description provided.

hojinDev and others added 8 commits November 13, 2025 23:04
기능 요구사항과 관련된 내용을 README.md에 작성.
로또샵에서 금액을 입력받아 로또를 구매할 수 있는 기능을 추가. 1000원 단위가 아닌 금액 입력 시 예외 처리 추가.

test: 로또 구매 기능에 대한 테스트 코드 작성.
로또 생성 클래스와 구매 후 번호를 출력하는 기능을 추가. 로또 구매 시 로또 객체를 반환하도록 변경하고, 테스트 코드 수정 및 추가.

footer: JVM Toolchain 17로 버전 변경.
당첨 번호와 구매한 로또를 비교해 당첨 결과 통계 및 수익률을 계산하는 기능 추가.
Rank enum 생성으로 당첨 등수 및 상금을 관리하고 LottoResult 클래스에서 결과를 처리하도록 구현.

footer: 테스트 코드 및 README.md 업데이트.
로또 클래스의 가독성과 책임 분리를 위해 상수들을 companion object로 이동.
이를 통해 상수가 클래스 인스턴스와 무관한 공용 정보임을 명확히 표현.

footer: 코드 정리 및 클래스 구조 개선.
예외 메시지에 상수를 활용하여 코드 중복을 제거하고 유지 보수성을 개선.
상수 값이 변경되더라도 메시지가 자동으로 반영되도록 처리.

footer: 예외 처리 가독성 향상.
금액 검증 로직을 init 및 invoke로 분리하여 가독성과 재사용성을 향상.
에러 메시지 및 최소 금액 상수를 추가하여 코드 중복 제거 및 유지 보수성 개선.

footer: 로직 재구성으로 유효성 검사 효율성 증가.
문자열 금액 입력 시 초기화 로직을 개선하고 중복된 검증 코드를 parseAndValidate 함수로 통합.
init 블록과 생성자에서 최소 금액 상수를 활용하여 코드 간소화.

footer: 코드 재사용성 및 유지 보수성 향상.
메서드의 동작과 의도를 더 명확히 표현하기 위해 buyLotto를 sellLotto로 리팩터링.
이에 따라 관련 호출부와 테스트 코드도 동일하게 수정.

footer: 가독성 및 코드 일관성 강화.
@hjlee83 hjlee83 closed this Nov 24, 2025
@hjlee83
Copy link
Author

hjlee83 commented Nov 24, 2025

아앗.

@hjlee83 hjlee83 reopened this Nov 24, 2025
Comment on lines +9 to +28
"문자가 포함된 경우 예외 발생" {
val exception =
shouldThrow<IllegalArgumentException> { WinLotto("1 2 3 4 5 육") }
exception.message shouldBe "올바른 숫자를 입력하세요"
}
"1보다 작거나 45보다 큰 숫자가 포함된 경우 예외 발생" {
val exception =
shouldThrow<IllegalArgumentException> { WinLotto("0 2 3 4 5 46") }
exception.message shouldBe "1부터 45까지의 숫자를 입력하세요"
}
"5개의 숫자를 입력하는 경우 예외 발생" {
val exception =
shouldThrow<IllegalArgumentException> { WinLotto("2 4 6 8 10") }
exception.message shouldBe "6개의 서로 다른 숫자를 입력하세요"
}
"6개 숫자 간 중복이 있는 경우" {
val exception =
shouldThrow<IllegalArgumentException> { WinLotto("2 4 6 8 10 2") }
exception.message shouldBe "6개의 서로 다른 숫자를 입력하세요"
}
Copy link

Choose a reason for hiding this comment

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

💯

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.

4 participants