Gilded Rose의 엔지니어링 팀에 오신 것을 환영해요! 아시다시피 우리는 최고급 상품만 사고파는 여관이에요. 우리 상품은 유통기한이 다가올수록 품질이 계속 떨어져서, 이런 데이터를 관리하는 재고 시스템을 운영하고 있어요.
새로운 카테고리의 상품을 판매하려면 시스템에 새 기능을 추가해야 해요. 그런데 코드가 엉망이라, 기존 코드를 먼저 리팩터링하지 않으면 새 기능을 추가하기 어려울 거예요.
그래서 할 일은 두 가지예요. 재고 시스템을 리팩터링하고, 새 기능을 추가하는 거예요.
우리 시스템의 기본은 이래요:
꽤 간단하죠? 그런데 여기서부터가 흥미로워요:
새 기능을 위한 길을 닦기 위해, 기존 코드를 리팩터링해서 변경하기 쉽게 만들어 봐요.
모든 것이 여전히 제대로 동작한다면, 즉 기존 기능에 대한 테스트가 여전히 통과한다면 무엇이든 바꾸고 새 코드를 추가해도 괜찮아요.
참고: 상품은 항상 유효한 품질로 _시작한다_고 가정해도 돼요. 다시 말해, 자동 테스트는 상품의 초기 품질이 최댓값을 넘는 경우나 **Sulfuras**의 초기 품질이 80이 아닌 경우에 무슨 일이 일어나는지는 확인하지 않아요.
최근에 Conjured 상품을 공급하는 업체와 계약했어요. 이제 시스템에 다음 규칙을 추가할 차례예요:
Exercism에 가입하고 Ruby 트랙을 개념 21개연습 문제 121개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.