mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 14:31:28 +00:00
added 4 individual private methods to update each item based on name
replicated main business logic to all 4 functions (can individually clean each function afterwards) added a switch statement in the main loop to call private methods
This commit is contained in:
parent
4dd7622f7a
commit
5c9f3822a2
@ -19,49 +19,201 @@ export class GildedRose {
|
|||||||
this.items = items;
|
this.items = items;
|
||||||
}
|
}
|
||||||
|
|
||||||
updateQuality() {
|
private updateAgedBrieItem(item: Item) {
|
||||||
for (const item of this.items) {
|
if (
|
||||||
if (
|
item.name != ItemNames.AGED_BRIE &&
|
||||||
item.name != ItemNames.AGED_BRIE &&
|
item.name != ItemNames.BACKSTAGE_PASSES
|
||||||
item.name != ItemNames.BACKSTAGE_PASSES
|
) {
|
||||||
) {
|
if (item.quality > 0) {
|
||||||
if (item.quality > 0) {
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
if (item.name != ItemNames.SULFURAS) {
|
item.quality = item.quality - 1;
|
||||||
item.quality = item.quality - 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (item.quality < MAX_ITEM_QUALITY) {
|
|
||||||
item.quality = item.quality + 1;
|
|
||||||
if (item.name == ItemNames.BACKSTAGE_PASSES) {
|
|
||||||
if (item.sellIn < 11) {
|
|
||||||
if (item.quality < MAX_ITEM_QUALITY) {
|
|
||||||
item.quality = item.quality + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (item.sellIn < 6) {
|
|
||||||
if (item.quality < MAX_ITEM_QUALITY) {
|
|
||||||
item.quality = item.quality + 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (item.name != ItemNames.SULFURAS) {
|
|
||||||
item.sellIn = item.sellIn - 1;
|
|
||||||
}
|
}
|
||||||
if (item.sellIn < 0) {
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
if (item.name != ItemNames.AGED_BRIE) {
|
item.quality = item.quality + 1;
|
||||||
if (item.name != ItemNames.BACKSTAGE_PASSES) {
|
if (item.name == ItemNames.BACKSTAGE_PASSES) {
|
||||||
if (item.quality > 0) {
|
if (item.sellIn < 11) {
|
||||||
if (item.name != ItemNames.SULFURAS) {
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
item.quality = item.quality - 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
item.quality = 0;
|
|
||||||
}
|
|
||||||
} else if (item.quality < MAX_ITEM_QUALITY) {
|
|
||||||
item.quality = item.quality + 1;
|
item.quality = item.quality + 1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
if (item.sellIn < 6) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.sellIn = item.sellIn - 1;
|
||||||
|
}
|
||||||
|
if (item.sellIn < 0) {
|
||||||
|
if (item.name != ItemNames.AGED_BRIE) {
|
||||||
|
if (item.name != ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item.quality = 0;
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateBackstagePassesItem(item: Item) {
|
||||||
|
if (
|
||||||
|
item.name != ItemNames.AGED_BRIE &&
|
||||||
|
item.name != ItemNames.BACKSTAGE_PASSES
|
||||||
|
) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
if (item.name == ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.sellIn < 11) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.sellIn < 6) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.sellIn = item.sellIn - 1;
|
||||||
|
}
|
||||||
|
if (item.sellIn < 0) {
|
||||||
|
if (item.name != ItemNames.AGED_BRIE) {
|
||||||
|
if (item.name != ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item.quality = 0;
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateSulfurasItem(item: Item) {
|
||||||
|
if (
|
||||||
|
item.name != ItemNames.AGED_BRIE &&
|
||||||
|
item.name != ItemNames.BACKSTAGE_PASSES
|
||||||
|
) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
if (item.name == ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.sellIn < 11) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.sellIn < 6) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.sellIn = item.sellIn - 1;
|
||||||
|
}
|
||||||
|
if (item.sellIn < 0) {
|
||||||
|
if (item.name != ItemNames.AGED_BRIE) {
|
||||||
|
if (item.name != ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item.quality = 0;
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private updateNormalItem(item: Item) {
|
||||||
|
if (
|
||||||
|
item.name != ItemNames.AGED_BRIE &&
|
||||||
|
item.name != ItemNames.BACKSTAGE_PASSES
|
||||||
|
) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
if (item.name == ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.sellIn < 11) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.sellIn < 6) {
|
||||||
|
if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.sellIn = item.sellIn - 1;
|
||||||
|
}
|
||||||
|
if (item.sellIn < 0) {
|
||||||
|
if (item.name != ItemNames.AGED_BRIE) {
|
||||||
|
if (item.name != ItemNames.BACKSTAGE_PASSES) {
|
||||||
|
if (item.quality > 0) {
|
||||||
|
if (item.name != ItemNames.SULFURAS) {
|
||||||
|
item.quality = item.quality - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
item.quality = 0;
|
||||||
|
}
|
||||||
|
} else if (item.quality < MAX_ITEM_QUALITY) {
|
||||||
|
item.quality = item.quality + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
updateQuality() {
|
||||||
|
for (const item of this.items) {
|
||||||
|
switch (item.name) {
|
||||||
|
case ItemNames.AGED_BRIE:
|
||||||
|
this.updateAgedBrieItem(item);
|
||||||
|
continue;
|
||||||
|
case ItemNames.BACKSTAGE_PASSES:
|
||||||
|
this.updateBackstagePassesItem(item);
|
||||||
|
continue;
|
||||||
|
case ItemNames.SULFURAS:
|
||||||
|
this.updateSulfurasItem(item);
|
||||||
|
continue;
|
||||||
|
default:
|
||||||
|
this.updateNormalItem(item);
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user