مرحبًا بك في فريق الهندسة في Gilded Rose! كما تعلم، نحن نُزل يشتري ويبيع أجود البضائع فقط. تتدهور جودة بضائعنا باستمرار مع اقتراب تاريخ انتهاء بيعها، لذلك لدينا نظام مخزون يتتبّع هذه البيانات.
نحتاج منك إلى إضافة ميزة جديدة إلى نظامنا حتى نتمكّن من البدء في بيع فئة جديدة من العناصر. لكن الكود في حالة فوضى، وسيكون من الصعب إضافة الميزة الجديدة ما لم تُعِد هيكلة الكود الحالي أولًا.
إذن مهمتك من شقّين: إعادة هيكلة نظام المخزون، ثم إضافة الميزة الجديدة.
إليك أساسيات نظامنا:
sell in تشير إلى عدد الأيام المتاحة لنا لبيع العنصر.quality تشير إلى قيمة العنصر.بسيط جدًا، أليس كذلك؟ حسنًا، هنا يصبح الأمر مثيرًا للاهتمام:
لتمهيد الطريق أمام الميزة الجديدة، أعد هيكلة الكود الحالي واجعله أسهل في التعديل.
لا تتردد في إجراء أي تغييرات وإضافة أي كود جديد ما دام كل شيء لا يزال يعمل بشكل صحيح (أي ما دامت اختبارات الميزات الحالية لا تزال تنجح).
ملاحظة: يمكنك أن تفترض أن العناصر تبدأ دائمًا بجودة صالحة. بعبارة أخرى، لا تتحقق الاختبارات الآلية مما يحدث عندما تكون الجودة الأولية لعنصر أعلى من الحد الأقصى، أو عندما تكون الجودة الأولية لـ Sulfuras قيمة غير 80.
تعاقدنا مؤخرًا مع مورّد لعناصر Conjured. مهمتك هي إضافة القواعد التالية إلى نظامنا:
سجّل في Exercism لتتعلّم وتتقن Ruby عبر 21 مفهومًا121 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.