Skip to content

kunsanglee/wanted-preonboarding-challenge-backend-13

 
 

Repository files navigation

wanted-preonboarding-challenge-backend-13

원티드 프리온보딩 백엔드 챌린지 사전과제

과제1

  • 비즈니스 요구사항: 소극장에 입장하는 관객의 티켓을 확인하고, 만약 티켓이 없다면 구매 후, 입장을 시키고 티켓이 있다면 티켓 확인 후, 입장 시킨다.
  • 문제: 위 "비즈니스 요구사항"에 맞게 개발된 Theater 패키지가 있다. 하지만, 실행은 잘 되지만 패키지에는 2가지 문제점을 가지고 있다.
    1. 코드를 읽는 사람이 코드(ex. 관람객의 상태나 행동)를 예측할 수 없다.
    2. 변경의 유연함을 토대로 확장성을 가지고 있지 않다.
  • 과제
    1. Theater 패키지의 코드를 읽는 사람이 쉽게 이해할 수 있고 예측할 수 있도록 수정 해보자.
    2. 매일 변화하는 비즈니스 요구사항의 변경에 유연하고 기능 확장성을 가지는 코드로 수정 해보자.
    3. TheaterService의 enter() 비즈니스 로직이 정상 실행되는지 확인해보자.
      • 관람객의 정보는 RequestMessage로 받아서 처리하자.
      • 관람객은 초대권 티켓을 가지고 있을 수도 있고 없을 수도 있다.

과제2

  • 비즈니스 요구사항: WantedCafe에서 아메리카노만 주문 및 결제가 가능한데, 다른 음료도 주문 및 결제가 가능하게 수정해주세요.
  • 문제: 위 "비즈니스 요구사항"에 맞게 개발 완료 및 정상 실행은 되지만 확장성과 유지보수성이 낮다.
  • 과제
    1. 현재 주문 가능한 음료는 오직 아메리카노뿐인데, 주문 가능한 음료의 수를 최대 3개까지 확장해보자.
    2. 각각의 객체들이 적절한 책임과 책임의 범위를 가지고 있는지 확인해보고, 너무 많은 책임과 넓은 범위의 책임을 가지고 있다면 적절하게 수정해보자.
    3. CafeService의 order() 비즈니스 로직이 정상 실행되는지 확인해보자.
      • 주문할 음료와 수량은 RequestBody로 받아서 처리하자.

https://www.notion.so/23-09-23-09-9f17eff14f1d40448e59430d0a80eee2?pvs=4 리팩토링 과정 리팩토링 전 코드는 크게 두 가지 기능으로 영화관에서 관람객이 티켓을 구매하거나 초대권을 사용하여 입장, 카페에서 고객이 캐셔에게 음료 주문을 하여 바리스타가 주문을 바탕으로 음료를 만들어주는 기능을 하는 코드였다. 하지만 기능이 동작하는 것과 별개로 각 객체들이 너무 많은 범위의 책임을 가지고 있었고, 클래스 간의 관계가 강하게 결합되어있어 확장이 어렵고 코드를 읽는 사람이 객체의 상태와 행동을 예측할 수 없는 문제가 있었다.

About

원티드 프리온보딩 백엔드 챌린지 사전과제

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%