refactoring quality management

This commit is contained in:
Ludwig V 2021-11-11 16:59:41 +01:00
parent c5c09385d4
commit f322e70f1e

View File

@ -26,12 +26,9 @@ export class GildedRose {
isOutdated(item: Item) { isOutdated(item: Item) {
return item.sellIn < 0 return item.sellIn < 0
} }
shouldDecreaseQuality(item: Item) { shouldDecreaseQuality(item: Item) {
return ( return item.name != 'Aged Brie' && item.name != 'Backstage passes to a TAFKAL80ETC concert'
item.name != 'Aged Brie' &&
item.name != 'Backstage passes to a TAFKAL80ETC concert' &&
item.quality > Item.minQualityThreshold
)
} }
isLegendayProduct(item: Item) { isLegendayProduct(item: Item) {
@ -39,11 +36,17 @@ export class GildedRose {
} }
incrementQuality(item: Item) { incrementQuality(item: Item) {
return item.quality + 1 if (item.quality < Item.maxQualityThreshold) {
return item.quality + 1
}
return item.quality
} }
decrementQuality(item: Item) { decrementQuality(item: Item) {
return item.quality - 1 if (item.quality > Item.minQualityThreshold) {
return item.quality - 1
}
return item.quality
} }
updateQuality() { updateQuality() {
@ -56,39 +59,31 @@ export class GildedRose {
if (this.shouldDecreaseQuality(item)) { if (this.shouldDecreaseQuality(item)) {
item.quality = this.decrementQuality(item) item.quality = this.decrementQuality(item)
} else { } else {
if (item.quality < Item.maxQualityThreshold) { item.quality = this.incrementQuality(item)
item.quality = this.incrementQuality(item) if (currentProductName === 'Backstage passes to a TAFKAL80ETC concert') {
if (currentProductName == 'Backstage passes to a TAFKAL80ETC concert') { if (item.sellIn < 11) {
if (item.sellIn < 11) { item.quality = this.incrementQuality(item)
if (item.quality < Item.maxQualityThreshold) { }
item.quality = this.incrementQuality(item) if (item.sellIn < 6) {
} item.quality = this.incrementQuality(item)
}
if (item.sellIn < 6) {
if (item.quality < Item.maxQualityThreshold) {
item.quality = this.incrementQuality(item)
}
}
} }
} }
} }
// part 2 // part 2
item.sellIn = item.sellIn - 1 item.sellIn = item.sellIn - 1
// part 3 // part 3
if (this.isOutdated(item)) { if (!this.isOutdated(item)) {
if (currentProductName != 'Aged Brie') { return
if (currentProductName != 'Backstage passes to a TAFKAL80ETC concert') { }
if (item.quality > Item.minQualityThreshold) {
item.quality = this.decrementQuality(item) if (currentProductName !== 'Aged Brie') {
} if (currentProductName !== 'Backstage passes to a TAFKAL80ETC concert') {
} else { item.quality = this.decrementQuality(item)
item.quality = item.quality - item.quality
}
} else { } else {
if (item.quality < Item.maxQualityThreshold) { item.quality = item.quality - item.quality
item.quality = this.incrementQuality(item)
}
} }
} else {
item.quality = this.incrementQuality(item)
} }
}) })