Backend Developer

[우테코프리코스] 4주차 미션 회고록

마지막 미션이 시작됐다! 이제껏 배운 내용을 총동원 해보는 시간이다.

11/5

오늘은 많이 못하고 피드백과 과제 제출 요령에 대해 봤다.

fork 대신에 templete으로 private repi를 개설하는 방법과 거기에 collaborator를 초대하는 방법을 배웠다. 협업을 할 때 이런 식으로도 진행되겠구나라는 것을 알 수 있었다.

이번 주차 피드백은 정말 귀담아들을 내용이 많았다.
그 중에 두 가지 내용에 대해서 작성해보자면,
먼저 객체는 객체답게 사용한다. 피드백이었는데 객체에서 데이터를 직접 꺼내지 말고 객체에게 원하는 정보가 있으면 차라리 그걸 물어보라는 것이다. 예를 들어 저번 주차 로또의 경우에는 숫자 비교를 할 때 로또한테 뺐어와서 하는 것이 아닌 로또한테 차라리 이 숫자 가지고 있냐고 물어보라는 것이다. 훨씬 책임의 분배가 깔끔해진다.
둘째는 테스트코드에 대한 것이었는데, 테스트 코드를 작성하기 위해서 구현 코드를 손보는 일은 하지 말라는 것이었다. 물론 테스트 코드를 작성하다가 구현 설계의 결함을 발견한다면 수정해야하지만, 그저 테스트를 위해 메서드를 하나 더 만든다던가 하는 행위를 하면 안된다는 것이다. 또 추가적으로 private 메서드를 test하고 싶으면 그냥 해당 메서드의 책임을 가지는 객체를 만들라는 것이다. 구현자가 생각하기에 중요한 테스트라면 하나의 객체의 책임으로 주어도 상관없다는 주의인 것 같다.

11/6

기능 요구사항

이번에는 편의점이었다. 이번엔 기능이 정말 많다.
차라리 정리하기보다 한줄 한줄 이해했는지 보려고 한다.

  • 사용자 입력에 대해 가게 상품의 가격 수량에 기반해 총 구매액을 계산한다.
  • 프로모션과 멤버십 정책을 반영하여 최종 결제 금액을 계산한다.
  • 재고를 고려하여 결제 가능 여부를 확인한다. 고객이 상품을 구매할 때마다 재고에서 차감한다.
  • 프로모션의 기간 안에 오는 날짜여만 프로모션이 적용된다. 프로모션에 대한 정보는 resource 폴더 마크다운 페이지에 명시되어 있다.
  • 프로모션은 1+1 또는 2+1이다. 프로모션 적용 가능 상황이면 프로모션 상품에 대해서 먼저 재고를 차감한다.
  • 사용자가 프로모션을 받을 수 있는 제품에 대해서 적게 가져온다면 혜택을 안내한다.
  • 프로모션 재고가 부족해서 일부 수량을 혜택없이 결제해야하는 경우 안내한다.
  • 멤버십은 프로모션 미적용 금액의 30% 할인이 그 내용이다.
  • 멤버십의 한도는 8000이다.
  • 영수증은 출력에 관련된 부분이다. 구매 내역과 증정 내역, 할인 내역 그리고 총 금액 정보를 제시한다.
  • 구매 내역에는 상품, 가격, 수량이 적혀 있다.
  • 증정 내역에는 프로모션에 의해 제공된 증정 상품의 목록이 있다.
  • 할인 내역에는 프로모션과 멤버십에 의해 할인된 금액이 있다.
  • 내실 돈과 총구매액은 할인 후 금액 할인 전 금액에 대해 명시한다.

++ 멤버십 할인 금액이 예시에서 대체 왜 그렇게 되어있나 했더니 프로모션 받은 항목에 대해서는 멤버십 알인을 하지 않는다는 것이었다. 주의하자

사용자 입력에 대한 기대 예외 사항

  • 사용자가 명단에 없는 상품을 골랐다.
  • 수량이 숫자가 아니다.
  • 정해진 형식을 따르지 않았다.
    • 대괄호로 묶이지 않는다.
    • 쓸데없는 공백이 생긴다.
    • 쉼표로 구분되지 않는다.
    • 하이픈으로 구분되지 않는다.
  • 각각 Y,N 이외의 입력이 들어온다.

뭔가 복잡한 듯 복잡하지 않은 입력인데 꼼꼼히 해봐야겠다.

프로그래밍 요구사항

  • 메서드의 길이 제한이 10으로 줄었다
  • View를 따로 구현하라는 요구사항이 있었다. inputviewoutputview를 나누어서 말이다.
  • camp.nextstep.edu.missionutils.DateTimesnow() 를 쓸 수 있게 되었다. 프로모션 기간 비교할 때 사용하면 될 거 같다.

자 오늘까지 설계를 끝내보도록 하겠다!

MVC

https://korean-otter.tistory.com/226 좋은 참고 자료가 있어서 가져와봤다!