From 31c3d16ad63d0a8cfb077d6ae3546887855ab35b Mon Sep 17 00:00:00 2001 From: EmanuelDicu Date: Wed, 29 Jun 2022 12:32:56 +0100 Subject: [PATCH] Refactor updateQuality method implementation by breaking it into specific updates for each item --- TypeScript/app/gilded-rose.ts | 100 ++++++++++++++++++---------------- 1 file changed, 54 insertions(+), 46 deletions(-) diff --git a/TypeScript/app/gilded-rose.ts b/TypeScript/app/gilded-rose.ts index db58d678..bd14724d 100644 --- a/TypeScript/app/gilded-rose.ts +++ b/TypeScript/app/gilded-rose.ts @@ -17,53 +17,61 @@ export class GildedRose { this.items = items; } - updateQuality() { - for (let i = 0; i < this.items.length; i++) { - if (this.items[i].name != 'Aged Brie' && this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - if (this.items[i].name == 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].sellIn < 11) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - if (this.items[i].sellIn < 6) { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - } - } - } - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].sellIn = this.items[i].sellIn - 1; - } - if (this.items[i].sellIn < 0) { - if (this.items[i].name != 'Aged Brie') { - if (this.items[i].name != 'Backstage passes to a TAFKAL80ETC concert') { - if (this.items[i].quality > 0) { - if (this.items[i].name != 'Sulfuras, Hand of Ragnaros') { - this.items[i].quality = this.items[i].quality - 1 - } - } - } else { - this.items[i].quality = this.items[i].quality - this.items[i].quality - } - } else { - if (this.items[i].quality < 50) { - this.items[i].quality = this.items[i].quality + 1 - } - } - } - } + private static updateSulfuras(item: Item) { + // do nothing + } + private static updateBackstagePass(item: Item) { + if (10 <= item.sellIn) + item.quality += 1; + else if (5 <= item.sellIn && item.sellIn < 10) + item.quality += 2; + else if (0 <= item.sellIn && item.sellIn < 5) + item.quality += 3; + else + item.quality = 0; + } + + private static updateAgedBrie(item: Item) { + ++item.quality; + if (item.sellIn < 0) + ++item.quality; + } + + private static updateRegularItem(item: Item) { + --item.quality; + if (item.sellIn < 0) + --item.quality; + } + + private static reboundQuality(item: Item) { + if (item.quality < 0) + item.quality = 0; + if (item.quality > 50) + item.quality = 50; + } + + private updateItemQuality(item: Item) { + --item.sellIn; + switch (item.name) { + case 'Sulfuras, Hand of Ragnaros': + GildedRose.updateSulfuras(item); + break; + case 'Backstage passes to a TAFKAL80ETC concert': + GildedRose.updateBackstagePass(item); + break; + case 'Aged Brie': + GildedRose.updateAgedBrie(item); + break; + default: + GildedRose.updateRegularItem(item); + } + GildedRose.reboundQuality(item); + } + + updateQuality() { + for (let i = 0; i < this.items.length; i++) + this.updateItemQuality(this.items[i]); return this.items; } }