💵로또게임💵
기술 스택
- JDK 11
- Junit5
- Gradle
프로젝트 규칙
- 코딩 컨벤션과 커밋 컨벤션을 최대한 지킨다.
- 기능 단위로 테스트 코드 작성
- 좀 더 견고한 프로젝트를 만들기
코딩 컨벤션
커밋 컨벤션
🎯요구사항
- JDK 11 버전에서 실행 가능해야 한다. JDK 11에서 정상적으로 동작하지 않을 경우 0점 처리한다.
- 프로그램 실행의 시작점은
Application
의main()
이다. -
build.gradle
파일을 변경할 수 없고, 외부 라이브러리를 사용하지 않는다. - Java 코드 컨벤션 가이드를 준수하며 프로그래밍한다.
- 프로그램 종료 시
System.exit()
를 호출하지 않는다. - 프로그램 구현이 완료되면
ApplicationTest
의 모든 테스트가 성공해야 한다. 테스트가 실패할 경우 0점 처리한다. - 프로그래밍 요구 사항에서 달리 명시하지 않는 한 파일, 패키지 이름을 수정하거나 이동하지 않는다.
- indent(인덴트, 들여쓰기) depth를 3이 넘지 않도록 구현한다. 2까지만 허용한다.
- 예를 들어 while문 안에 if문이 있으면 들여쓰기는 2이다.
- 힌트: indent(인덴트, 들여쓰기) depth를 줄이는 좋은 방법은 함수(또는 메서드)를 분리하면 된다.
- 함수(또는 메서드)가 한 가지 일만 하도록 최대한 작게 만들어라.
- JUnit 5와 AssertJ를 이용하여 본인이 정리한 기능 목록이 정상 동작함을 테스트 코드로 확인한다.
추가 요구 사항(위 요구 사항을 전부 충족 시 진행)
- 수(또는 메서드)의 길이가 15라인을 넘어가지 않도록 구현한다.
- 함수(또는 메서드)가 한 가지 일만 잘 하도록 구현한다.
- else 예약어를 쓰지 않는다.
- 힌트: if 조건절에서 값을 return하는 방식으로 구현하면 else를 사용하지 않아도 된다.
- else를 쓰지 말라고 하니 switch/case로 구현하는 경우가 있는데 switch/case도 허용하지 않는다.
- Java Enum을 적용한다.
- 도메인 로직에 단위 테스트를 구현해야 한다. 단, UI(System.out, System.in, Scanner) 로직은 제외한다.
- 핵심 로직을 구현하는 코드와 UI를 담당하는 로직을 분리해 구현한다.
- 단위 테스트 작성이 익숙하지 않다면
test/java/lotto/LottoTest
를 참고하여 학습한 후 테스트를 구현한다.
프로젝트 설계
기능 구분
1) 상점에서 로또 구매
- 구매금액에 따른 로또 갯수 구해주는 역할
- 로또 랜덤 발급 역할 [오름차순]
2) 지난주 당첨 번호 추첨
- 쉼표로 구분, 번호 6개및 보너스 번호 입력 받기
- 당첨 통계 역할
- 총 수익률 역할
패키지 구조도
└── src
├── main
│ └── java
│ └── com
│ └── example
│ ├── Application.java
│ ├── controller
│ ├── constant
│ ├── domain
│ ├── exception
│ ├── util
│ └── view
│
test
└── java
└── lotto