- TDD 기반으로 프로그래밍하는 경험을 한다.
- 로또 구현을 통해 단위 테스트, 리팩토링, 객체 지향 프로그래밍하는 경험을 한다.
- 클래스, 메소드 이름을 통해 의도를 드러내 다른 사람이 읽기 좋은 코드를 구현하는 경험을 한다.
- 요구사항을 파악한다.
- 요구사항에 대한 구현을 완료한 후 자신의 브랜치에 Pull Request(이하 PR)를 통해 코드 리뷰 요청을 한다.
- 코드 리뷰 피드백에 대한 개선 작업을 하고 다시 Push 한다.
- 로또 구입 금액을 입력하면 구입 금액에 해당하는 로또를 발급해야 한다.
- 로또 1장의 가격은 1000원이다.
- 2등을 위해 보너스 번호를 하나 더 추첨한다.
- 사용자가 수동으로 추첨 번호를 입력할수 있다.
- 수동 게임 회수, 수동으로 구매할 번호를 입력할 수 있다.
- 수동 게임 발급 후에는 나머지 돈으로는 자동 게임을 발급한다.
- 당첨금은 다음과 같다.
- 1등 - 2_000_000_000 원
- 2등 - 30_000_000 원
- 3등 - 1_500_000 원
- 4등 - 50_000 원
- 5등 - 5_000 원
- 위 요구사항에 따라 14000원어치의 로또를 구매한 결과는 다음과 같다.
구입금액을 입력해 주세요.
14000
수동으로 구매할 로또 수를 입력해 주세요.
3
수동으로 구매할 번호를 입력해 주세요.
8, 21, 23, 41, 42, 43
3, 5, 11, 16, 32, 38
7, 11, 16, 35, 36, 44
수동으로 3장, 자동으로 11개를 구매했습니다.
[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]
[23, 25, 33, 36, 39, 41]
[1, 3, 5, 14, 22, 45]
[5, 9, 38, 41, 43, 44]
[2, 8, 9, 18, 19, 21]
[13, 14, 18, 21, 23, 35]
[17, 21, 29, 37, 42, 45]
[3, 8, 27, 30, 35, 44]
지난 주 당첨 번호를 입력해 주세요.
1, 2, 3, 4, 5, 6
보너스 볼을 입력해 주세요.
7
당첨 통계
---------
3개 일치 (5000원)- 1개
4개 일치 (50000원)- 0개
5개 일치 (1500000원)- 0개
5개 일치, 보너스 볼 일치(30000000원) - 0개
6개 일치 (2000000000원)- 0개
총 수익률은 0.35입니다.(기준이 1이기 때문에 결과적으로 손해라는 의미임)
- 모든 기능을 TDD로 구현한다.(모든 로직에 단위테스트를 구현한다.)
- 들여쓰기를 1단계만 허용한다.
- 메소드는 최대 15 라인까지만 허용한다.
- else를 사용하지 않는다.
- 자바 코드 컨벤션을 지킨다.
- Enum을 사용한다.
- 일급 콜렉션을 사용한다.
- 모든 원시값, 문자열을 포장한다.
- 기능을 구현하기 전에 SPEC.md 파일에 구현할 기능 목록을 정리해 추가한다.
- git의 commit 단위는 앞 단계에서 SPEC.md 파일에 정리한 기능 목록 단위로 추가한다.
- commit message 종류를 다음과 같이 구분
feat (feature)
fix (bug fix)
docs (documentation)
style (formatting, missing semi colons, …)
refactor
test (when adding missing tests)
chore (maintain)
- 기능 구현과 JUnit, AssertJ 구현 힌트
- 코드 리뷰 프로세스
- Google Code Convention 문서
- Google Code Style Guide 에서
intellij-java-google-style.xml받을 수 있음.
- Google Code Style Guide 에서