refactor: for loop's content can be moved to item

This commit is contained in:
Kadir Sirimsi 2025-02-10 13:45:13 +01:00
parent d66943f0f4
commit 35d648a4c6
No known key found for this signature in database
GPG Key ID: A21C0144C2D2A134
2 changed files with 46 additions and 43 deletions

View File

@ -9,45 +9,7 @@ class GildedRose {
public void updateQuality() {
for (Item item : items) {
boolean isAgedBrie = item.getName().equals("Aged Brie");
boolean isSulfuras = item.getName().equals("Sulfuras, Hand of Ragnaros");
boolean passesToTafkalConcert = item.getName().equals("Backstage passes to a TAFKAL80ETC concert");
if (!isAgedBrie && !passesToTafkalConcert) {
if (item.quality > 0 && !isSulfuras) {
item.deductOneFromQuality();
}
} else if(item.quality < 50) {
item.addOneToQuality();
if (passesToTafkalConcert) {
if (item.sellIn < 11 && item.quality < 50) {
item.addOneToQuality();
}
if (item.sellIn < 6 && item.quality < 50) {
item.addOneToQuality();
}
}
}
if (!isSulfuras) {
item.deductSellIn();
}
if (item.sellIn < 0) {
if (!isAgedBrie) {
if (!passesToTafkalConcert) {
if (item.quality > 0 && !isSulfuras) {
item.deductOneFromQuality();
}
} else {
item.setQualityToZero();
}
} else if ((item.quality < 50)) {
item.addOneToQuality();
}
}
item.updateItem();
}
}
}

View File

@ -18,19 +18,60 @@ public class Item {
return name;
}
public void setQualityToZero() {
public void updateItem() {
boolean isAgedBrie = name.equals("Aged Brie");
boolean isSulfuras = name.equals("Sulfuras, Hand of Ragnaros");
boolean isBackStagePass = name.equals("Backstage passes to a TAFKAL80ETC concert");
if (!isAgedBrie && !isBackStagePass) {
if (quality > 0 && !isSulfuras) {
deductOneFromQuality();
}
} else if(quality < 50) {
addOneToQuality();
if (isBackStagePass) {
if (sellIn < 11 && quality < 50) {
addOneToQuality();
}
if (sellIn < 6 && quality < 50) {
addOneToQuality();
}
}
}
if (!isSulfuras) {
deductSellIn();
}
if (sellIn < 0) {
if (!isAgedBrie) {
if (!isBackStagePass) {
if (quality > 0 && !isSulfuras) {
deductOneFromQuality();
}
} else {
setQualityToZero();
}
} else if ((quality < 50)) {
addOneToQuality();
}
}
}
private void setQualityToZero() {
quality = 0;
}
public void deductSellIn() {
private void deductSellIn() {
sellIn--;
}
public void addOneToQuality() {
private void addOneToQuality() {
quality++;
}
public void deductOneFromQuality() {
private void deductOneFromQuality() {
quality--;
}