Skip to content

Conversation

@suhyun113
Copy link

@suhyun113 suhyun113 commented Nov 3, 2025

📝 프로젝트 개요

사용자로부터 구입 금액·당첨 번호·보너스 번호를 입력받아 티켓을 발행하고, 등수 집계 및 수익률을 출력하는 콘솔 기반 로또 프로그램을 구현했습니다. 입력 파싱/검증은 함수형 유틸로 분리하고, 티켓 상태와 검증은 Lotto 도메인이 담당하도록 구조화했습니다. 에러는 throw new Error("[ERROR] ...")로 한 포맷으로만 발생시키며, InputView가 try-catch로 재질문 루프를 제어합니다.

🌿 주요 구현 내용

  • 함수형 유틸로 파싱/검증 분리: 상태가 없는 로직을 순수 함수로 구성하여 재사용성과 테스트 용이성을 높였습니다.
  • 즉시 throw 기반 에러 흐름: NaN 신호 사용을 지양하고, 형식 위반 즉시 throw 하여 원인 파악과 재질문 제어를 단순화했습니다.
  • 도메인 캡슐화: Lotto는 #numbers로 내부 상태를 은닉하고, getNumbers()로만 읽도록 했습니다.
  • 출력 포맷 표준화: RANK_LABEL과 format* 유틸로 예시 포맷을 정확히 맞췄습니다.
  • 코딩 제약 준수: indent depth ≤ 2, 3항 연산자 미사용, 함수 길이 ≤ 15라인, else 지양을 지켰습니다.

⚠️ 예외 처리 정책

  • 모든 오류 메시지는 단일 포맷([ERROR] ...)로 출력합니다.
  • parser/validator는 오류 시 즉시 throw 하며, InputView가 try-catch로 동일 단계 재질문을 보장합니다.
  • 중복 [ERROR] 방지를 위해 출력 레이어에서만 메시지를 표준화하고, 내부 유틸은 메시지에 [ERROR]를 중복 첨부하지 않습니다.

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