mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2025-12-12 04:12:13 +00:00
31 lines
3.3 KiB
Markdown
31 lines
3.3 KiB
Markdown
# مواصفات متطلبات Gilded Rose
|
|
|
|
مرحبًا بكم في فريق Gilded Rose. كما تعلمون، نحن نُدير نزلاً صغيرًا بموقع مميز في مدينة بارزة يديره صاحب نزل ودود يُدعى Allison. نحن نشتري ونبيع فقط أرقى البضائع.
|
|
لسوء الحظ، بضائعنا تتدهور في (Quality) القيمة مع اقتراب تاريخ بيعها.
|
|
|
|
لدينا نظام يقوم بتحديث المخزون لدينا. تم تطويره بواسطة شخص عملي يُدعى Leeroy، الذي انتقل الآن إلى مغامرات جديدة.
|
|
مهمتك هي إضافة ميزة جديدة إلى نظامنا لكي نبدأ ببيع فئة جديدة من العناصر. أولاً، مقدمة عن نظامنا:
|
|
|
|
- جميع (Items) العناصر لها قيمة (SellIn) تاريخ البيع، والذي يشير إلى عدد الأيام المتبقية لبيع (Items) العناصر.
|
|
- جميع (Items) العناصر لها قيمة (Quality) القيمة، والتي تدل على مدى قيمة العنصر.
|
|
- في نهاية كل يوم، يقوم نظامنا بتقليل القيمتين لكل عنصر.
|
|
|
|
بسيط، أليس كذلك؟ حسنًا، هنا تصبح الأمور مثيرة:
|
|
|
|
- بمجرد أن يمر تاريخ البيع، تتدهور (Quality) القيمة بمعدل مضاعف.
|
|
- لا يمكن أن تكون قيمة (Quality) القيمة سالبة أبدًا.
|
|
- __"Aged Brie"__ تزداد (Quality) القيمة الخاصة به مع تقدم عمره.
|
|
- لا يمكن أن تتجاوز قيمة (Quality) القيمة أكثر من `50`.
|
|
- __"Sulfuras"__، كونه عنصرًا أسطوريًا، لا يحتاج أبدًا إلى البيع ولا تتناقص (Quality) القيمة الخاصة به.
|
|
- __"Backstage passes"__، مثل Aged Brie، تزداد (Quality) القيمة الخاصة به مع اقتراب موعد البيع:
|
|
- تزداد (Quality) القيمة بمقدار `2` عندما يتبقى `10` أيام أو أقل، وبمقدار `3` عندما يتبقى `5` أيام أو أقل.
|
|
- ولكن، تنخفض (Quality) القيمة إلى `0` بعد انتهاء الحفل.
|
|
|
|
لقد وقعنا مؤخرًا عقدًا مع مورد لعناصر __"Conjured"__. هذا يتطلب تحديثًا لنظامنا:
|
|
|
|
- عناصر __"Conjured"__ تتدهور (Quality) القيمة الخاصة بها بمعدل أسرع مرتين من العناصر العادية.
|
|
|
|
يمكنك إجراء أي تغييرات على طريقة `UpdateQuality` وإضافة أي كود جديد طالما أن كل شيء لا يزال يعمل بشكل صحيح. ومع ذلك، لا تقم بتعديل فئة `Item` أو خاصية (Items) العناصر، لأن الغول الجالس في الزاوية سيغضب بشدة وقد يقضي عليك في لحظة، فهو لا يؤمن بمشاركة ملكية الكود (يمكنك جعل `UpdateQuality` و (Items) العناصر ساكنين static إذا أردت، وسنتكفل نحن بالتغطية عليك).
|
|
|
|
للتوضيح فقط، لا يمكن لقيمة (Quality) القيمة لأي عنصر أن تزيد عن `50`، باستثناء __"Sulfuras"__، حيث أن (Quality) القيمة الخاصة به تساوي `80` ولا تتغير أبدًا.
|