Tracks
/
Ruby
Ruby
/
Übungen
/
Gilded Rose
Gilded Rose

Gilded Rose

Schwer

Anleitung

Willkommen im Entwicklungsteam von Gilded Rose! Wie du weißt, sind wir ein Gasthaus, das ausschließlich die feinsten Waren kauft und verkauft. Die Qualität unserer Waren verschlechtert sich ständig, je näher ihr Haltbarkeitsdatum rückt, deshalb haben wir ein Inventarsystem, das diese Daten im Blick behält.

Wir möchten, dass du unserem System ein neues Feature hinzufügst, damit wir anfangen können, eine neue Kategorie von Gegenständen zu verkaufen. Allerdings ist der Code ein einziges Durcheinander, und es wird schwierig sein, das neue Feature hinzuzufügen, wenn du nicht zuerst den vorhandenen Code refaktorierst.

Deine Aufgabe ist also zweigeteilt: Refaktoriere das Inventarsystem und füge dann das neue Feature hinzu.

Überblick über das Inventarsystem

Das sind die Grundlagen unseres Systems:

  • Alle Gegenstände haben ein Attribut „sell in“, das die Anzahl der Tage angibt, die uns bleiben, um den Gegenstand zu verkaufen.
  • Alle Gegenstände haben ein Attribut „quality“, das angibt, wie wertvoll der Gegenstand ist.
  • Am Ende jedes Tages senkt unser System beide Werte für jeden Gegenstand.

Ziemlich einfach, oder? Aber jetzt wird es interessant:

  • Sobald das Haltbarkeitsdatum erreicht ist, verschlechtert sich die Qualität doppelt so schnell.
  • Die Qualität eines Gegenstands ist nie negativ.
  • Die Qualität von Aged Brie steigt sogar, je älter er wird.
  • Die Qualität eines Gegenstands beträgt nie mehr als 50.
  • Sulfuras ist ein legendärer Gegenstand, hat kein Haltbarkeitsdatum und eine Qualität von 80, die nie sinkt.
  • Backstage passes steigen in ihrer Qualität, genau wie Aged Brie, je näher ihr Haltbarkeitsdatum rückt: Die Qualität steigt um 2, wenn 10 Tage oder weniger übrig sind, und um 3, wenn es 5 Tage oder weniger sind. Nach dem Konzert fällt die Qualität jedoch auf 0.

1. Refaktorieren

Um den Weg für das neue Feature zu ebnen, refaktoriere den vorhandenen Code und mach ihn leichter änderbar.

Du darfst gerne beliebige Änderungen vornehmen und neuen Code hinzufügen, solange alles weiterhin korrekt funktioniert (das heißt, solange die Tests für die vorhandenen Features weiterhin bestehen).

Hinweis: Du kannst davon ausgehen, dass Gegenstände immer mit einer gültigen Qualität starten. Mit anderen Worten: Die automatisierten Tests prüfen nicht, was passiert, wenn ein Gegenstand eine Anfangsqualität über dem Maximum hat oder wenn eine Sulfuras eine Anfangsqualität ungleich 80 hat.

2. Das neue Feature hinzufügen

Wir haben kürzlich einen Lieferanten für Conjured-Gegenstände unter Vertrag genommen. Deine Aufgabe ist es, die folgenden Regeln zu unserem System hinzuzufügen:

  • Conjured-Gegenstände fallen auf Qualität 0, sobald ihr Haltbarkeitsdatum erreicht ist. Außerdem:
    • Die Qualität von Conjured normal items verschlechtert sich doppelt so schnell wie die von nicht verzauberten normalen Gegenständen.
    • Conjured Sulfuras hat ein Haltbarkeitsdatum, anders als eine nicht verzauberte Sulfuras.
    • Die Qualität von Conjured backstage passes steigt um 1 weniger, als wenn sie nicht verzaubert wären.
Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab
Ruby Exercism

Bereit, mit Gilded Rose zu starten?

Melde dich bei Exercism an, um Ruby mit 21 Konzepte121 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.