Skip to content

woowacourse/jwp-refactoring

 
 

Repository files navigation

키친포스

미션 요구 사항

1단계 - 테스트를 통한 코드 보호

  • 요구사항 1. kitchenpos 패키지의 코드를 보고 키친포스의 요구 사항을 README.md에 작성한다.
  • 요구사항 2. 정리한 키친포스의 요구 사항을 토대로 테스트 코드를 작성한다. 모든 Business Object에 대한 테스트 코드를 작성한다. @SpringBootTest를 이용한 통합 테스트 코드 또는 @ExtendWith(MockitoExtension.class)를 이용한 단위 테스트 코드를 작성한다.

2단계 - 서비스 리팩터링

요구 사항

  • 단위 테스트하기 어려운 코드와 단위 테스트 가능한 코드를 분리해 단위 테스트 가능한 코드에 대해 단위 테스트를 구현한다.

객체지향 생활 체조 원칙

한 메서드에 오직 한 단계의 들여쓰기만 한다.
else 예약어를 쓰지 않는다.
모든 원시 값과 문자열을 포장한다.
한 줄에 점을 하나만 찍는다.
줄여 쓰지 않는다(축약 금지).
모든 엔티티를 작게 유지한다.
3개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
일급 컬렉션을 쓴다.
getter/setter/프로퍼티를 쓰지 않는다.

치킨집 요구 사항

상품

  • 상품을 등록할 수 있다.
    • 상품 이름과 가격을 입력해 상품을 등록한다.
    • 가격이 0보다 작거나 null일 수 없다.
  • 상품 목록을 조회할 수 있다.

메뉴 그룹

  • 메뉴 그룹을 등록할 수 있다.
    • 메뉴 그룹 이름을 입력해 메뉴그룹을 등록한다.
  • 메뉴 그룹 목록을 조회할 수 있다.

메뉴

  • 메뉴를 등록할 수 있다.
    • 메뉴의 이름과 가격, 메뉴 그룹과 메뉴 상품 목록을 입력해 등록할 수 있다.
    • 가격은 null과 0보다 작을 수 없다.
    • 등록되지 않은 메뉴 그룹을 입력할 수 없다.
    • 메뉴는 특정 메뉴 그룹에 속해있어야 한다.
    • 단품의 합이 메뉴 가격보다 커야 한다.
  • 메뉴 목록을 조회할 수 있다.

주문 테이블

  • 테이블을 등록할 수 있다.
  • 모든 테이블의 목록을 조회할 수 있다.
  • 테이블 상태를 설정할 수 있다.
    • 비어있는지, 손님이 있는지 설정 가능.
    • 주문 상태가 조리 또는 식사인 주문 테이블은 빈 테이블 설정 또는 해지할 수 없다.
  • 손님 수를 입력할 수 있다.
    • 손님 수는 0명 이상만 입력할 수 있다.
    • 테이블이 비어있으면 손님을 입력할 수 없다.

단체 지정

  • 단체 지정 테이블을 등록할 수 있다.
    • 테이블이 2개 이상인 경우에만 등록할 수 있다.
    • 빈 테이블만 등록이 가능하다.
  • 단체 지정 테이블을 해지할 수 있다.
    • 주문 상태가 요리중이거나 식사인 경우에는 해지할 수 없다.

주문

  • 주문을 등록할 수 있다.
    • 주문 항목이 1개 이상일때만 등록할 수 있다.
    • 빈 테이블이면 등록할 수 있다.
    • 등록되어 있지 않은 메뉴가 하나라도 있다면 주문을 할 수가 없다.
  • 주문 리스트를 조회할 수 있다.
  • 주문 상태를 변경할 수 있다.
    • 계산이 된 테이블을 주문 상태를 변경할 수 없다.

용어 사전

한글명 영문명 설명
상품 product 메뉴를 관리하는 기준이 되는 데이터
메뉴 그룹 menu group 메뉴 묶음, 분류
메뉴 menu 메뉴 그룹에 속하는 실제 주문 가능 단위
메뉴 상품 menu product 메뉴에 속하는 수량이 있는 상품
금액 amount 가격 * 수량
주문 테이블 order table 매장에서 주문이 발생하는 영역
빈 테이블 empty table 주문을 등록할 수 없는 주문 테이블
주문 order 매장에서 발생하는 주문
주문 상태 order status 주문은 조리 ➜ 식사 ➜ 계산 완료 순서로 진행된다.
방문한 손님 수 number of guests 필수 사항은 아니며 주문은 0명으로 등록할 수 있다.
단체 지정 table group 통합 계산을 위해 개별 주문 테이블을 그룹화하는 기능
주문 항목 order line item 주문에 속하는 수량이 있는 메뉴
매장 식사 eat in 포장하지 않고 매장에서 식사하는 것

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages