Update GildedRose.java

refactored code into small and reusable chunks focusing on items
This commit is contained in:
Renikunta Pradeep 2022-03-16 16:14:42 +05:30 committed by GitHub
parent f80413c2fd
commit 63e79e073e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -3,60 +3,112 @@ package com.gildedrose;
class GildedRose { class GildedRose {
Item[] items; Item[] items;
public static final String AGED_BRIE = "Aged Brie";
public static final String BACKSTAGE_PASSES = "Backstage passes to a TAFKAL80ETC concert";
public static final String SULFURAS = "Sulfuras, Hand of Ragnaros";
public static final String CONJURED = "Conjured";
public GildedRose(Item[] items) { public GildedRose(Item[] items) {
this.items = items; this.items = items;
} }
public void updateQuality() { public void updateQuality() {
for (int i = 0; i < items.length; i++) { for (Item item : items) {
if (!items[i].name.equals("Aged Brie") updateQuality(item);
&& !items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { updateSellIn(item);
if (items[i].quality > 0) {
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
items[i].quality = items[i].quality - 1;
} }
} }
private void updateQuality(Item item) {
switch (item.name) {
case AGED_BRIE:
updateAgedBrie(item);
break;
case BACKSTAGE_PASSES:
updateBackStagePasses(item);
break;
case SULFURAS:
updateSulfras(item);
break;
case CONJURED:
updateConjured(item);
break;
default:
updateNormalItem(item);
break;
}
}
private void updateAgedBrie(Item item) {
increaseQualityByOne(item);
if (isItemExpired(item)) {
increaseQualityByOne(item);
}
}
private void updateBackStagePasses(Item item) {
if (!isItemExpired(item)) {
increaseQualityByOne(item);
if (item.sellIn < 11) {
increaseQualityByOne(item);
}
if (item.sellIn < 6) {
increaseQualityByOne(item);
}
} else { } else {
if (items[i].quality < 50) { item.quality = 0;
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;
}
}
}
}
} }
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) { private void updateSulfras(Item item) {
items[i].sellIn = items[i].sellIn - 1; // todo...
} }
if (items[i].sellIn < 0) { private void updateConjured(Item item) {
if (!items[i].name.equals("Aged Brie")) { updateNormalItem(item);
if (!items[i].name.equals("Backstage passes to a TAFKAL80ETC concert")) { updateNormalItem(item);
if (items[i].quality > 0) {
if (!items[i].name.equals("Sulfuras, Hand of Ragnaros")) {
items[i].quality = items[i].quality - 1;
} }
private void updateNormalItem(Item item) {
decreaseQualityByOne(item);
if (isItemExpired(item)) {
decreaseQualityByOne(item);
} }
} else {
items[i].quality = items[i].quality - items[i].quality;
} }
} else { private void updateSellIn(Item item) {
if (items[i].quality < 50) {
items[i].quality = items[i].quality + 1; if (!item.name.equals(SULFURAS)) {
item.sellIn = item.sellIn - 1;
} }
} }
private boolean isItemExpired(Item item) {
return item.sellIn < 0;
} }
public void decreaseQualityByOne(Item item) {
if (item.quality > 0) {
item.quality = item.quality - 1;
} }
} }
public void increaseQualityByOne(Item item) {
if (item.quality < 50) {
item.quality = item.quality + 1;
}
}
} }