From 9ddf30fefa20e74919a253043fbe4cc6733b2bca Mon Sep 17 00:00:00 2001 From: Alvin Abia Date: Fri, 1 Jul 2022 15:51:56 -0700 Subject: [PATCH] refactor of business logic! --- .../main/java/com/gildedrose/GildedRose.java | 71 ++++++++----------- 1 file changed, 29 insertions(+), 42 deletions(-) diff --git a/Java/src/main/java/com/gildedrose/GildedRose.java b/Java/src/main/java/com/gildedrose/GildedRose.java index e6feb751..b26b463c 100644 --- a/Java/src/main/java/com/gildedrose/GildedRose.java +++ b/Java/src/main/java/com/gildedrose/GildedRose.java @@ -8,55 +8,42 @@ class GildedRose { } public void updateQuality() { - for (int i = 0; i < items.length; i++) { - if (!items[i].name.equals("Aged Brie") - && !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; + for (Item item : items) { + if (item.name.contains("Sulfuras")) { + // legendaries don't change stats so just skip + continue; + } else if (item.name.contains("Aged Brie")) { + // handling special aged brie rules + if (item.quality < 50) { + if (item.sellIn <= 0) { + item.quality += 2; + } else { + item.quality++; } } + } else if (item.name.contains("Backstage passes")) { + // handling backstage passes + if (item.sellIn <= 0) { + item.quality = 0; + } else if (item.sellIn <= 5) { + item.quality += 3; + } else if (item.sellIn <= 10) { + item.quality += 2; + } } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - - if (items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].sellIn < 11) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - - if (items[i].sellIn < 6) { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } + // just a regular item + if (item.sellIn <= 0) { + item.quality -= 2; + } else { + item.quality --; } } - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].sellIn = items[i].sellIn - 1; + if (item.quality < 0) { + item.quality = 0; } - if (items[i].sellIn < 0) { - if (!items[i].name.equals("Aged Brie")) { - if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { - if (items[i].quality > 0) { - if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { - items[i].quality = items[i].quality - 1; - } - } - } else { - items[i].quality = items[i].quality - items[i].quality; - } - } else { - if (items[i].quality < 50) { - items[i].quality = items[i].quality + 1; - } - } - } + item.sellIn--; } } -} \ No newline at end of file +}