Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[크리스마스] 코드 리뷰 부탁드립니다! #1

Open
wants to merge 51 commits into
base: review
Choose a base branch
from
Open
Changes from 1 commit
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
8e1abb6
docs : 기능 요구사항 초안 정리
youngsu5582 Nov 11, 2023
5d4a71e
feat : 입출력 담당 하는 InputView,OutputView 추가
youngsu5582 Nov 11, 2023
199640c
feat : Parser , CustomException 추가
youngsu5582 Nov 11, 2023
78d259d
feat : Calendar , DayOfWeek 추가
youngsu5582 Nov 11, 2023
9674ca5
feat : Date 를 생성 하는 기능 추가
youngsu5582 Nov 11, 2023
ec5663b
feat : Category , Menu , MenuItem 추가
youngsu5582 Nov 11, 2023
10a9bad
feat : MenuCatalog 추가
youngsu5582 Nov 11, 2023
8a7f8b1
feat : RequestOrder 추가
youngsu5582 Nov 11, 2023
307c46e
feat : Order 추가
youngsu5582 Nov 12, 2023
eec9b9a
feat : OrderResult 추가 , MenuCatalog 함수 변경
youngsu5582 Nov 12, 2023
66303fe
feat : Bill 추가
youngsu5582 Nov 12, 2023
2b7addd
feat : DayOfWeek 에 함수 추가
youngsu5582 Nov 12, 2023
24930ab
feat : Event,DiscountEvent,PresentEvent 추가
youngsu5582 Nov 12, 2023
8e2d438
feat : Event,DiscountEvent,PresentEvent 제네릭 타입 추가
youngsu5582 Nov 12, 2023
0227308
feat : WeekendDiscountEvent 기능 추가
youngsu5582 Nov 12, 2023
4e8dc13
feat : WeekdayDiscountEvent,ChristmasDiscountEvent 추가
youngsu5582 Nov 12, 2023
7b950dd
feat : SpecialDiscountEvent,ChampagnePresentEvent 추가
youngsu5582 Nov 13, 2023
7d90095
feat : DiscountEventReward , PresentEventReward 추가
youngsu5582 Nov 13, 2023
8b5dfa8
feat : 기존 Event 리턴 타입 변경
youngsu5582 Nov 13, 2023
d9bd891
feat : EventReward 추가
youngsu5582 Nov 13, 2023
6883c9d
feat : 혜택을 모오는 Reward 추가
youngsu5582 Nov 13, 2023
8bfd238
feat : Badge 추가
youngsu5582 Nov 13, 2023
f5cf59d
feat : 방문할 날짜를 입력 하는 1번 기능 요구 사항 완료
youngsu5582 Nov 13, 2023
a23b4a1
feat : 주문할 메뉴와 메뉴 개수 입력 하는 2번 기능 요구 사항 완료
youngsu5582 Nov 13, 2023
6a1ad99
fix : 누락된 파일 추가
youngsu5582 Nov 13, 2023
5259f91
feat : 숫자 변환 해주는 Formatter 추가
youngsu5582 Nov 13, 2023
a28a077
feat : 적용 가능한 이벤트 혜택 적용 하는 3번 기능 요구 사항 완료
youngsu5582 Nov 13, 2023
55540fa
fix : 잘못 기입한 상수명 수정
youngsu5582 Nov 13, 2023
ed16c00
feat : 총 혜택 금액 따라 이벤트 뱃지 부여 하는 4번 기능 요구 사항 완료
youngsu5582 Nov 14, 2023
163e909
feat : 숫자에 따라 , 포맷 결정 하는 formatBasedOnNumber 추가
youngsu5582 Nov 14, 2023
f72430a
feat : 모든 기능 완료에 따른 Application 에 GameController 추가
youngsu5582 Nov 14, 2023
6b8c209
refactor : 에러 메시지 내용 변경 및 불필요한 파일 제거
youngsu5582 Nov 14, 2023
f33c8bc
refactor : 에러 메시지 내용 변경 , 구분자 상수 파일로 이동
youngsu5582 Nov 14, 2023
4a00ee2
refactor : 배열 생성중 , 반복문 구문 분리
youngsu5582 Nov 14, 2023
d67a2c7
feat : RewardDto getTotalDiscountReward 추가
youngsu5582 Nov 14, 2023
54276b0
feat : Date Service try - catch 문 추가
youngsu5582 Nov 14, 2023
e0d8cf1
refactor : 코드 전반 적인 리팩토링
youngsu5582 Nov 14, 2023
eba4437
refactor : Coverage 위한 불 필요한 코드 제거
youngsu5582 Nov 14, 2023
830c2b7
refactor : Date Domain 관련 리팩토링
youngsu5582 Nov 14, 2023
dbbd4fe
refactor : Order Domain 관련 리팩토링
youngsu5582 Nov 14, 2023
8e0860e
refactor : Event 파일들 Discount , Present 로 구분
youngsu5582 Nov 14, 2023
a955741
refactor : Event 이름 상수 파일로 이동
youngsu5582 Nov 14, 2023
39ac7eb
refactor : Domain 폴더 변경
youngsu5582 Nov 14, 2023
fbb42fc
refactor : import 구문 순서 변경
youngsu5582 Nov 14, 2023
48f694b
refactor : 제출 전 리팩토링
youngsu5582 Nov 14, 2023
a5c7c16
test : 테스트 케이스 추가
youngsu5582 Nov 14, 2023
0367681
feat : Event,Service,Controller Factory 추가
youngsu5582 Nov 15, 2023
562c727
test : 파일명 변경 및 테스트 코드 추가
youngsu5582 Nov 15, 2023
0a7415e
refactor : 테스트 함수명 변경 , 누락 함수 추가
youngsu5582 Nov 15, 2023
cfce5be
refactor : Test 내 Domain 파일 폴더별 분리
youngsu5582 Nov 15, 2023
ba73ffc
docs : 기능 전부 구현 후 README 상세 내용 추가
youngsu5582 Nov 15, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
docs : 기능 요구사항 초안 정리
  • Loading branch information
youngsu5582 committed Nov 11, 2023
commit 8e1abb6e5dacc5ddd348ddb7ed2389cd436cd5ee
83 changes: 83 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
# 🎄java-christmas

## ⚠️ 구현 전 체크리스트
### 🖥️ 프로그래밍 요구 사항

##### 프로젝트가 JDK 17 버전인가?

##### Java 코드 컨벤션 가이드를 준수하기 위해 이를 알고 있는가?

### 📚 과제 진행 요구 사항

##### 미션은 java-lotto-6 저장소를 Fork & Clone 하는가?

##### 기능 구현하기 전 docs/README.md 에 구현할 기능 목록을 정리해 추가하였는가?

### 🔘 기능 요구 사항

### 1. 방문할 날짜를 입력한다.
#### a. 날짜는 1일 부터 31일 사이로 입력한다.
` 예외처리 : 날짜가 숫자가 아닐시`
` 예외처리 : 날짜가 1이상 31이하 숫자가 아닐시
#### b. 날짜가 평일인지 주말인지 확인한다.
##### 평일은 일, 월, 화, 수, 목요일을 의미한다.
##### 주말은 금 , 토요일을 의미한다.
- 12월의 시작은 금요일로 시작한다.
- 12월의 마지막은 일요일로 끝난다.
### 2. 주문할 메뉴와 메뉴의 개수를 입력한다.
#### a. 메뉴판에 존재하는 메뉴를 메뉴-숫자 처럼 입력한다.
`예외처리 : 주문 형식이 올바르지 않을시`
`예외처리 : 메뉴판에 없는 메뉴를 입력시`
`예외처리 : 중복 메뉴를 입력할 시`
`예외처리 : 메뉴 개수가 1이상의 숫자가 아닐시`

#### b. 주문한 메뉴를 종합하여 카테고리가 있는 주문서를 만든다.
( 카테고리는 에피타이저, 메인, 디저트, 음료 총 4개가 있다 )
`예외처리 : 주문한 메뉴가 음료 카테고리에만 속할시`
`예외처리 : 총 주문한 개수가 20개를 초과할시`

### 3. 적용 가능한 이벤트 혜택을 적용한다.
- 총 주문 금액이 10,000 이상부터 이벤트 적용이 가능하다.
#### a. 적용이 가능한 이벤트를 확인한다.
( 이벤트 종류는 할인 이벤트 와 , 증정 이벤트 총 2개가 있다 )
##### 할인 이벤트는 날짜를 통해 , 적용 여부를 확인한다.
##### 증정 이벤트는 총 주문 금액을 통해 , 적용 여부를 확인한다.
- 증정 이벤트에 해당 하지 않을 시 , "없음" 으로 표기한다.

#### b. 총 혜택 금액을 계산한다.
- 증정 메뉴도 총 혜택 금액에 포함하여 계산한다.
- 적용된 이벤트가 하나도 없을 시 , "없음" 으로 표기한다.

### 4. 총 혜택 금액에 따라 이벤트 뱃지를 부여한다.
( 뱃지는 별,트리,산타 총 3개가 있다)
- 부여되는 뱃지가 없는 경우 , "없음"으로 표기한다.


## 🕶️ 구현 후 체크리스트

##### ☑️ System.exit() 를 호출하지 않는가?

##### ☑️ 프로그램 구현 완료 시 ApplicationTest 의 모든 테스트가 성공하는가?

##### ☑️ build.gradle 및 외부 라이브러리를 사용하지 않았는가?

##### ☑️ `camp.nextstep.edu.missionutils`에서 제공하는 `Randoms` 및 `Console` API를 사용하여 구현했는가?

##### ☑️ Java 코드 컨벤션 가이드 준수해 프로그래밍 했는가?

### 기존 추가 요구 사항

##### ☑️ indent depth 가 3이 넘지 않도록 구현하였는가?
##### ☑️ 3항 연산자를 쓰지 않았는가?
##### ☑️ 함수가 한 가지 일만을 하는가?

##### ☑️ JUnit5 와 AssertJ 를 사용해 저이한 기능 목록이 정상 동작함을 테스트 코드로 확인했는가?

##### ☑️ 함수(또는 메서드)의 길이가 15라인을 넘어가지 않도록 구현했는가? ( main 함수 포함 )

##### ☑️ else 와 switch 를 사용하지 않았는가?
##### ☑️ Java Enum을 적용했는가?

##### ☑️ 도메인 로직에 대한 단위 테스트를 구현 했는가?

##### ☑️ 입력 과 출력을 담당하는 클래스를 별도로 구현했는가?