mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 15:01:28 +00:00
commit
a65f61a2e5
@ -7,6 +7,9 @@ class GildedRose {
|
|||||||
public static final String BACKSTAGE = "Backstage passes to a TAFKAL80ETC concert";
|
public static final String BACKSTAGE = "Backstage passes to a TAFKAL80ETC concert";
|
||||||
public static final String CONJURED = "Conjured Mana Cake";
|
public static final String CONJURED = "Conjured Mana Cake";
|
||||||
|
|
||||||
|
private Item[] items;
|
||||||
|
|
||||||
|
|
||||||
private Item[] items;
|
private Item[] items;
|
||||||
|
|
||||||
public GildedRose(Item... items) {
|
public GildedRose(Item... items) {
|
||||||
@ -20,6 +23,16 @@ class GildedRose {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updateItemQuality(Item item) {
|
private void updateItemQuality(Item item) {
|
||||||
|
|
||||||
|
boolean isExpired = item.sellIn < 1;
|
||||||
|
int degradeRate = determineDegradeRate(item, isExpired);
|
||||||
|
boolean doesDegrade = !item.name.equals(AGED_BRIE) && !item.name.equals(BACKSTAGE) && !item.name.equals(SULFURAS);
|
||||||
|
boolean hasSellBy = !item.name.equals(SULFURAS);
|
||||||
|
|
||||||
|
if (doesDegrade) {
|
||||||
|
adjustQuality(item, degradeRate);
|
||||||
|
}
|
||||||
|
|
||||||
int degradeRate = item.name.equals(CONJURED) ? -2 : -1;
|
int degradeRate = item.name.equals(CONJURED) ? -2 : -1;
|
||||||
if (!item.name.equals(AGED_BRIE)
|
if (!item.name.equals(AGED_BRIE)
|
||||||
&& !item.name.equals(BACKSTAGE)) {
|
&& !item.name.equals(BACKSTAGE)) {
|
||||||
@ -31,20 +44,26 @@ class GildedRose {
|
|||||||
} else {
|
} else {
|
||||||
adjustQuality(item, 1);
|
adjustQuality(item, 1);
|
||||||
|
|
||||||
if (item.name.equals(BACKSTAGE)) {
|
|
||||||
if (item.sellIn < 11) {
|
|
||||||
adjustQuality(item, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (item.sellIn < 6) {
|
if (item.name.equals(AGED_BRIE)) {
|
||||||
adjustQuality(item, 1);
|
int adjustment = isExpired ? 2 : 1;
|
||||||
}
|
adjustQuality(item, adjustment);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (!item.name.equals(SULFURAS)) {
|
if (item.name.equals(BACKSTAGE)) {
|
||||||
item.sellIn = item.sellIn - 1;
|
updateBackStagePass(item, isExpired);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hasSellBy) {
|
||||||
|
item.sellIn = item.sellIn - 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void updateBackStagePass(Item item, boolean isExpired) {
|
||||||
|
adjustQuality(item, 1);
|
||||||
|
if (item.sellIn < 11) {
|
||||||
|
adjustQuality(item, 1);
|
||||||
|
|
||||||
if (item.sellIn < 0) {
|
if (item.sellIn < 0) {
|
||||||
if (!item.name.equals(AGED_BRIE)) {
|
if (!item.name.equals(AGED_BRIE)) {
|
||||||
@ -60,12 +79,26 @@ class GildedRose {
|
|||||||
adjustQuality(item, adjustment);
|
adjustQuality(item, adjustment);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void adjustQuality(Item item, int adjustment) {
|
if (item.sellIn < 6) {
|
||||||
|
adjustQuality(item, 1);
|
||||||
|
}
|
||||||
|
if (isExpired) {
|
||||||
|
item.quality = item.quality - item.quality;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int determineDegradeRate(Item item, boolean isExpired) {
|
||||||
|
int baseDegradeRate = item.name.equals(CONJURED) ? -2 : -1;
|
||||||
|
return isExpired ? baseDegradeRate * 2 : baseDegradeRate;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void adjustQuality(Item item, int adjustment) {
|
||||||
int newQuality = item.quality + adjustment;
|
int newQuality = item.quality + adjustment;
|
||||||
boolean isValid = newQuality <= 50 && newQuality >= 0;
|
boolean isInvalidRange = newQuality <= 50 && newQuality >= 0;
|
||||||
if (isValid) {
|
if (isInvalidRange) {
|
||||||
item.quality = newQuality;
|
item.quality = newQuality;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user