Skip to content

Conversation

@pleasebelieveme
Copy link
Owner

@pleasebelieveme pleasebelieveme commented Nov 4, 2025

Summary by CodeRabbit

릴리스 노트

  • 리팩토링

    • 입력 검증 및 파싱 로직 통합으로 오류 처리 개선
    • 유효성 검사 메커니즘 재구성
  • 테스트

    • 파서 및 검증 기능에 대한 테스트 커버리지 확대

@pleasebelieveme pleasebelieveme merged commit 8da9aee into main Nov 4, 2025
@coderabbitai
Copy link

coderabbitai bot commented Nov 4, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

파서 클래스들의 검증 및 파싱 로직을 새로운 ParserUtils 유틸리티로 통합 및 중앙화했습니다. InputValidator의 검증 메서드를 재구성하고, 기존 Lotto 클래스를 삭제했으며, 관련 테스트를 추가/수정했습니다.

Changes

Cohort / File(s) Summary
기존 Lotto 클래스 삭제
src/main/java/lotto/Lotto.java
기존 Lotto 클래스 및 검증 로직 제거
ParserUtils 유틸리티 생성
src/main/java/lotto/parser/ParserUtils.java
새로운 정적 유틸리티 클래스 도입: validateNotNullOrEmpty(), parseToInteger() 메서드 추가
파서 리팩토링
src/main/java/lotto/parser/BonusNumberParser.java, src/main/java/lotto/parser/PurchaseAmountParser.java, src/main/java/lotto/parser/WinningNumbersParser.java
인라인 검증 및 파싱 로직을 ParserUtils 호출로 교체; 에러 메시지 상수 추가
InputValidator 재구성
src/main/java/lotto/validator/InputValidator.java
구매 금액 검증을 인라인으로 변경; validateWinningNumbers(), validateBonusNumber() 메서드 추가
문서 제거
src/main/java/lotto/domain/LottoTickets.java
getLottoCount(), getLottos() 메서드 위의 Javadoc 주석 제거
테스트 확대
src/test/java/lotto/ApplicationTest.java
기능 테스트 및 예외 테스트 추가
ParserUtils 테스트
src/test/java/lotto/parser/ParserUtilsTest.java
새로운 ParserUtilsTest 클래스 추가; 검증 및 파싱 메서드에 대한 포괄적 테스트 커버리지
파서 테스트 리팩토링
src/test/java/lotto/parser/PurchaseAmountParserTest.java, src/test/java/lotto/parser/WinningNumbersParserTest.java
테스트 시나리오 재구성, 메서드 이름 변경, 공백 처리 및 null 입력 테스트 추가
InputValidator 테스트 조정
src/test/java/lotto/validator/InputValidatorTest.java
테스트 입력값 확대 (0 추가) 및 메서드 번호 재조정

Sequence Diagram(s)

sequenceDiagram
    participant Parser as Parser<br/>(Old)
    participant Input as Input String

    Input->>Parser: parseToInteger()
    activate Parser
    Note over Parser: Direct try-catch<br/>Integer.parseInt()
    alt Success
        Parser-->>Input: int
    else Failure
        Parser-->>Input: NumberFormatException
    end
    deactivate Parser

    participant Parser2 as Parser<br/>(New)
    participant Utils as ParserUtils

    Input->>Parser2: parseToInteger()
    activate Parser2
    Parser2->>Utils: parseToInteger(input, errorMsg)
    activate Utils
    alt Valid
        Utils-->>Parser2: int
    else Invalid
        Utils-->>Parser2: NumberFormatException
    end
    deactivate Utils
    Parser2-->>Input: int / Exception
    deactivate Parser2
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25분

  • 특별 주의 영역:
    • ParserUtils.java: 새로운 공개 유틸리티 클래스의 설계 및 에러 처리 로직 검증 필요
    • InputValidator.java: 검증 로직 인라인화 및 새로운 위임 메서드의 정확성 확인
    • WinningNumbersParser.java: 새로운 validateNoEmptyValues() 헬퍼 메서드와 공백 처리 로직 검토
    • 파서 테스트들: 메서드 이름 변경 및 테스트 순서 재조정에 따른 일관성 확인

Possibly related PRs

Poem

🐰✨ 파서들이 모여 유틸로 변신
검증 로직 한곳에, 중복은 이제 안녕
코드는 더 깨끗하고 테스트는 더 튼튼
리팩토링의 마법이 완성되었네요! 🎩

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch pleasebelieveme

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3f9edf8 and e3d0b37.

📒 Files selected for processing (12)
  • src/main/java/lotto/Lotto.java (0 hunks)
  • src/main/java/lotto/domain/LottoTickets.java (0 hunks)
  • src/main/java/lotto/parser/BonusNumberParser.java (1 hunks)
  • src/main/java/lotto/parser/ParserUtils.java (1 hunks)
  • src/main/java/lotto/parser/PurchaseAmountParser.java (1 hunks)
  • src/main/java/lotto/parser/WinningNumbersParser.java (1 hunks)
  • src/main/java/lotto/validator/InputValidator.java (1 hunks)
  • src/test/java/lotto/ApplicationTest.java (1 hunks)
  • src/test/java/lotto/parser/ParserUtilsTest.java (1 hunks)
  • src/test/java/lotto/parser/PurchaseAmountParserTest.java (1 hunks)
  • src/test/java/lotto/parser/WinningNumbersParserTest.java (3 hunks)
  • src/test/java/lotto/validator/InputValidatorTest.java (8 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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