mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-17 15:31:27 +00:00
extracted bulk of if checks and cleaned up method
This commit is contained in:
parent
2d5d980dd2
commit
7a7102c9cb
@ -4,8 +4,8 @@ public class GildedRose {
|
|||||||
private static let agedBrieString = "Aged Brie"
|
private static let agedBrieString = "Aged Brie"
|
||||||
private static let backstagePassString = "Backstage passes to a TAFKAL80ETC concert"
|
private static let backstagePassString = "Backstage passes to a TAFKAL80ETC concert"
|
||||||
private static let sulfurasString = "Sulfuras, Hand of Ragnaros"
|
private static let sulfurasString = "Sulfuras, Hand of Ragnaros"
|
||||||
|
private static let conjuredString = "conjured"
|
||||||
|
|
||||||
private static let itemQualityDegradationAmount = -1
|
|
||||||
private static let minimumQuality = 0
|
private static let minimumQuality = 0
|
||||||
private static let maximumQuality = 50
|
private static let maximumQuality = 50
|
||||||
|
|
||||||
@ -15,6 +15,11 @@ public class GildedRose {
|
|||||||
self.items = items
|
self.items = items
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func calculateDegradeRate(_ item: Item, isExpired: Bool) -> Int {
|
||||||
|
let degradeRate = item.name.lowercased().range(of: GildedRose.conjuredString) != nil ? -2 : -1
|
||||||
|
return isExpired ? degradeRate * 2 : degradeRate
|
||||||
|
}
|
||||||
|
|
||||||
private func adjustQuality(_ item: Item, adjustment: Int) {
|
private func adjustQuality(_ item: Item, adjustment: Int) {
|
||||||
let adjustedQuality = item.quality + adjustment
|
let adjustedQuality = item.quality + adjustment
|
||||||
if adjustedQuality <= GildedRose.maximumQuality && adjustedQuality >= GildedRose.minimumQuality {
|
if adjustedQuality <= GildedRose.maximumQuality && adjustedQuality >= GildedRose.minimumQuality {
|
||||||
@ -22,42 +27,34 @@ public class GildedRose {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private func updateItemQuality(_ item: Item) {
|
private func adjustBackstagePassQuality(_ item: Item, isExpired: Bool) {
|
||||||
let itemQualityDegradationAmount = item.name.lowercased().range(of: "conjured") != nil ? GildedRose.itemQualityDegradationAmount * 2 : GildedRose.itemQualityDegradationAmount
|
self.adjustQuality(item, adjustment: 1)
|
||||||
|
if item.sellIn < 11 {
|
||||||
if item.name != GildedRose.agedBrieString, item.name != GildedRose.backstagePassString {
|
|
||||||
if item.name != GildedRose.sulfurasString {
|
|
||||||
self.adjustQuality(item, adjustment: itemQualityDegradationAmount)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
self.adjustQuality(item, adjustment: 1)
|
self.adjustQuality(item, adjustment: 1)
|
||||||
|
}
|
||||||
|
if item.sellIn < 6 {
|
||||||
|
self.adjustQuality(item, adjustment: 1)
|
||||||
|
}
|
||||||
|
if isExpired {
|
||||||
|
self.adjustQuality(item, adjustment: -item.quality)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if item.name == GildedRose.backstagePassString {
|
private func updateItemQuality(_ item: Item) {
|
||||||
if item.sellIn < 11 {
|
let isExpired = item.sellIn < 1
|
||||||
self.adjustQuality(item, adjustment: 1)
|
let itemQualityDegradationAmount = self.calculateDegradeRate(item, isExpired: isExpired)
|
||||||
}
|
if item.name != GildedRose.agedBrieString && item.name != GildedRose.backstagePassString && item.name != GildedRose.sulfurasString {
|
||||||
|
self.adjustQuality(item, adjustment: itemQualityDegradationAmount)
|
||||||
if item.sellIn < 6 {
|
}
|
||||||
self.adjustQuality(item, adjustment: 1)
|
if item.name == GildedRose.agedBrieString {
|
||||||
}
|
self.adjustQuality(item, adjustment: isExpired ? 2 : 1)
|
||||||
}
|
}
|
||||||
|
if item.name == GildedRose.backstagePassString {
|
||||||
|
self.adjustBackstagePassQuality(item, isExpired: isExpired)
|
||||||
}
|
}
|
||||||
if item.name != GildedRose.sulfurasString {
|
if item.name != GildedRose.sulfurasString {
|
||||||
item.sellIn = item.sellIn - 1
|
item.sellIn = item.sellIn - 1
|
||||||
}
|
}
|
||||||
if item.sellIn < 0 {
|
|
||||||
if item.name != GildedRose.agedBrieString {
|
|
||||||
if item.name != GildedRose.backstagePassString {
|
|
||||||
if item.name != GildedRose.sulfurasString {
|
|
||||||
self.adjustQuality(item, adjustment: itemQualityDegradationAmount)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
self.adjustQuality(item, adjustment: -item.quality)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
self.adjustQuality(item, adjustment: 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public func updateQuality() {
|
public func updateQuality() {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user