Kurzusok
/
Ruby
Ruby
/
Feladatok
/
Aranyozott rózsa
Aranyozott rózsa

Aranyozott rózsa

Nehéz

Utasítások

Üdvözlünk a Gilded Rose mérnöki csapatában! Mint tudod, mi egy fogadó vagyunk, amely kizárólag a legkiválóbb árukat vásárolja és adja el. Az áruink minősége folyamatosan romlik, ahogy közelednek a lejárati idejükhöz, ezért van egy készletkezelő rendszerünk, amely nyomon követi ezeket az adatokat.

Szeretnénk, ha hozzáadnál egy új funkciót a rendszerünkhöz, hogy elkezdhessünk árulni egy új tárgykategóriát. A kód azonban káosz, és nehéz lesz hozzáadni az új funkciót, hacsak előbb nem refaktorálod a meglévő kódot.

A feladatod tehát kettős: refaktoráld a készletkezelő rendszert, majd add hozzá az új funkciót.

A készletkezelő rendszer áttekintése

Íme a rendszerünk alapjai:

  • Minden tárgynak van egy „eladási idő” attribútuma, amely megmutatja, hány napunk van eladni a tárgyat.
  • Minden tárgynak van egy „minőség” attribútuma, amely megmutatja, mennyire értékes a tárgy.
  • Minden nap végén a rendszerünk mindkét értéket csökkenti minden tárgynál.

Egészen egyszerű, ugye? Nos, itt válik érdekessé a dolog:

  • Amint elérkezik a lejárati idő, a minőség kétszer olyan gyorsan romlik.
  • A tárgy minősége soha nem negatív.
  • Az Aged Brie minősége valójában nő, ahogy egyre öregebb lesz.
  • A tárgy minősége soha nem haladja meg az 50-et.
  • A Sulfuras legendás tárgy lévén nem rendelkezik lejárati idővel, és 80 a minősége, amely soha nem csökken.
  • A Backstage passes az Aged Brie-hez hasonlóan növeli a minőségét, ahogy közeledik a lejárati ideje: a minőség 2-vel nő, ha 10 nap vagy kevesebb van hátra, és 3-mal, ha 5 nap vagy kevesebb, a koncert után viszont a minőség 0-ra esik.

1. Refaktorálás

Hogy előkészítsd a terepet az új funkciónak, refaktoráld a meglévő kódot, és tedd könnyebben módosíthatóvá.

Nyugodtan végezz bármilyen változtatást, és adj hozzá új kódot, ameddig minden továbbra is helyesen működik (vagyis ameddig a meglévő funkciók tesztjei továbbra is sikeresek).

Megjegyzés: feltételezheted, hogy a tárgyak mindig érvényes minőséggel indulnak. Más szóval, az automatikus tesztek nem ellenőrzik, mi történik, ha egy tárgy kezdeti minősége meghaladja a maximumot, vagy ha egy Sulfuras kezdeti minősége nem 80.

2. Az új funkció hozzáadása

Nemrég szerződést kötöttünk egy Conjured tárgyakat szállító beszállítóval. A feladatod, hogy a következő szabályokat hozzáadd a rendszerünkhöz:

  • A Conjured tárgyak minősége 0-ra esik, amint elérkezik a lejárati idejük. Emellett:
    • A Conjured normal items minősége kétszer olyan gyorsan romlik, mint a nem conjured normál tárgyaké.
    • A Conjured Sulfuras rendelkezik lejárati idővel, ellentétben a nem conjured Sulfurasszal.
    • A Conjured backstage passes minősége 1-gyel kevesebbet nő, mint ha nem lennének conjured tárgyak.
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ruby Exercism

Készen állsz elkezdeni a(z) Aranyozott rózsa feladatot?

Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ruby nyelvet 21 fogalom121 feladat segítségével, valódi emberi mentorálással, mindez ingyen.