mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-16 06:51:27 +00:00
Extracted range checks and added helper methods + constants
This commit is contained in:
parent
584d658dd6
commit
d0cb683b03
@ -1,59 +1,66 @@
|
|||||||
|
import Foundation
|
||||||
|
|
||||||
public class GildedRose {
|
public class GildedRose {
|
||||||
|
private static let agedBrieString = "Aged Brie"
|
||||||
|
private static let backstagePassString = "Backstage passes to a TAFKAL80ETC concert"
|
||||||
|
private static let sulfurasString = "Sulfuras, Hand of Ragnaros"
|
||||||
|
|
||||||
|
private static let itemQualityDegradationAmount = -1
|
||||||
|
private static let minimumQuality = 0
|
||||||
|
private static let maximumQuality = 50
|
||||||
|
|
||||||
var items: [Item]
|
var items: [Item]
|
||||||
|
|
||||||
public init(items: [Item]) {
|
public init(items: [Item]) {
|
||||||
self.items = items
|
self.items = items
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private func adjustQuality(_ item: Item, adjustment: Int) {
|
||||||
|
let adjustedQuality = item.quality + adjustment
|
||||||
|
if adjustedQuality <= GildedRose.maximumQuality && adjustedQuality >= GildedRose.minimumQuality {
|
||||||
|
item.quality += adjustment
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public func updateQuality() {
|
private func updateItemQuality(_ item: Item) {
|
||||||
for i in 0 ..< items.count {
|
if item.name != GildedRose.agedBrieString, item.name != GildedRose.backstagePassString {
|
||||||
if items[i].name != "Aged Brie", items[i].name != "Backstage passes to a TAFKAL80ETC concert" {
|
if item.name != GildedRose.sulfurasString {
|
||||||
if items[i].quality > 0 {
|
self.adjustQuality(item, adjustment: item.name.lowercased().range(of: "conjured") != nil ? GildedRose.itemQualityDegradationAmount * 2 : GildedRose.itemQualityDegradationAmount)
|
||||||
if items[i].name != "Sulfuras, Hand of Ragnaros" {
|
|
||||||
items[i].quality = items[i].quality - 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if items[i].quality < 50 {
|
|
||||||
items[i].quality = items[i].quality + 1
|
|
||||||
|
|
||||||
if items[i].name == "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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
if items[i].name != "Sulfuras, Hand of Ragnaros" {
|
self.adjustQuality(item, adjustment: 1)
|
||||||
items[i].sellIn = items[i].sellIn - 1
|
|
||||||
}
|
if item.name == GildedRose.backstagePassString {
|
||||||
|
if item.sellIn < 11 {
|
||||||
if items[i].sellIn < 0 {
|
self.adjustQuality(item, adjustment: 1)
|
||||||
if items[i].name != "Aged Brie" {
|
}
|
||||||
if items[i].name != "Backstage passes to a TAFKAL80ETC concert" {
|
|
||||||
if items[i].quality > 0 {
|
if item.sellIn < 6 {
|
||||||
if items[i].name != "Sulfuras, Hand of Ragnaros" {
|
self.adjustQuality(item, adjustment: 1)
|
||||||
items[i].quality = items[i].quality - 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
items[i].quality = items[i].quality - items[i].quality
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if items[i].quality < 50 {
|
|
||||||
items[i].quality = items[i].quality + 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if item.name != GildedRose.sulfurasString {
|
||||||
|
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: item.name.lowercased().range(of: "conjured") != nil ? GildedRose.itemQualityDegradationAmount * 2 : GildedRose.itemQualityDegradationAmount)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.adjustQuality(item, adjustment: -item.quality)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
self.adjustQuality(item, adjustment: 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public func updateQuality() {
|
||||||
|
items.forEach({ item in
|
||||||
|
updateItemQuality(item)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user