mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-15 22:41:30 +00:00
Refactored GildedRose
Signed-off-by: Atul Anand <atulanand206@gmail.com>
This commit is contained in:
parent
5f9bbe6716
commit
c29949a491
@ -2,57 +2,106 @@ package com.gildedrose
|
|||||||
|
|
||||||
class GildedRose(val items: Array[Item]) {
|
class GildedRose(val items: Array[Item]) {
|
||||||
|
|
||||||
|
|
||||||
def updateQuality() {
|
def updateQuality() {
|
||||||
for (i <- 0 until items.length) {
|
for (i <- items.indices) {
|
||||||
if (!items(i).name.equals("Aged Brie")
|
if (isItemNotIncremental(i)) {
|
||||||
&& !items(i).name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
if (isQualityPositive(i))
|
||||||
if (items(i).quality > 0) {
|
incrementQuality(i, -1)
|
||||||
if (!items(i).name.equals("Sulfuras, Hand of Ragnaros")) {
|
} else
|
||||||
items(i).quality = items(i).quality - 1
|
incrementQualityForIncrementalItems(i)
|
||||||
}
|
decrementSellInIfNotSulfuras(i)
|
||||||
}
|
if (isSellInLessThanThreshold(i, 0))
|
||||||
} else {
|
updateQualityIfSellInZero(i)
|
||||||
if (items(i).quality < 50) {
|
|
||||||
items(i).quality = items(i).quality + 1
|
|
||||||
|
|
||||||
if (items(i).name.equals("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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!items(i).name.equals("Sulfuras, Hand of Ragnaros")) {
|
|
||||||
items(i).sellIn = items(i).sellIn - 1
|
|
||||||
}
|
|
||||||
|
|
||||||
if (items(i).sellIn < 0) {
|
|
||||||
if (!items(i).name.equals("Aged Brie")) {
|
|
||||||
if (!items(i).name.equals("Backstage passes to a TAFKAL80ETC concert")) {
|
|
||||||
if (items(i).quality > 0) {
|
|
||||||
if (!items(i).name.equals("Sulfuras, Hand of Ragnaros")) {
|
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private def incrementQualityForIncrementalItems(i: Int): Unit = {
|
||||||
|
if (isQualityLessThan50(i)) {
|
||||||
|
incrementQuality(i, 1)
|
||||||
|
additionalIncrementForBackstagePasses(i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private def updateQualityIfSellInZero(i: Int): Unit = {
|
||||||
|
if (isAgedBrie(i))
|
||||||
|
incrementQualityBy1IfLessThan50(i)
|
||||||
|
else if (isBackstagePass(i))
|
||||||
|
dropQualityTo0(i)
|
||||||
|
else if (!isSulfuras(i) && isQualityPositive(i))
|
||||||
|
incrementQuality(i, -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def additionalIncrementForBackstagePasses(i: Int): Unit = {
|
||||||
|
if (isBackstagePass(i))
|
||||||
|
incrementBackstagePassQuality(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def incrementBackstagePassQuality(i: Int): Unit = {
|
||||||
|
incrementForBackstagePassesIfSellInBetween5and10(i)
|
||||||
|
incrementForBackstagePassesIfSellInBetween0and5(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def incrementForBackstagePassesIfSellInBetween0and5(i: Int): Unit = {
|
||||||
|
if (isSellInLessThanThreshold(i, 6))
|
||||||
|
incrementQualityBy1IfLessThan50(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def incrementForBackstagePassesIfSellInBetween5and10(i: Int): Unit = {
|
||||||
|
if (isSellInLessThanThreshold(i, 11))
|
||||||
|
incrementQualityBy1IfLessThan50(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def decrementSellInIfNotSulfuras(i: Int): Unit = {
|
||||||
|
if (!isSulfuras(i))
|
||||||
|
decrementSellIn(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def incrementQualityBy1IfLessThan50(i: Int): Unit = {
|
||||||
|
if (isQualityLessThan50(i))
|
||||||
|
incrementQuality(i, 1)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isSellInLessThanThreshold(i: Int, threshold: Int) = {
|
||||||
|
items(i).sellIn < threshold
|
||||||
|
}
|
||||||
|
|
||||||
|
private def decrementSellIn(i: Int): Unit = {
|
||||||
|
items(i).sellIn = items(i).sellIn - 1
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isQualityPositive(i: Int) = {
|
||||||
|
items(i).quality > 0
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isQualityLessThan50(i: Int) = {
|
||||||
|
items(i).quality < 50
|
||||||
|
}
|
||||||
|
|
||||||
|
private def incrementQuality(i: Int, delta: Int): Unit = {
|
||||||
|
items(i).quality = items(i).quality + delta
|
||||||
|
}
|
||||||
|
|
||||||
|
private def dropQualityTo0(i: Int): Unit = {
|
||||||
|
items(i).quality = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isItemNotIncremental(i: Int) = {
|
||||||
|
!isAgedBrie(i) && !isBackstagePass(i) && !isSulfuras(i)
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isBackstagePass(i: Int) = {
|
||||||
|
items(i).name.equals("Backstage passes to a TAFKAL80ETC concert")
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isAgedBrie(i: Int) = {
|
||||||
|
items(i).name.equals("Aged Brie")
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isSulfuras(i: Int) = {
|
||||||
|
items(i).name.equals("Sulfuras, Hand of Ragnaros")
|
||||||
|
}
|
||||||
|
|
||||||
|
private def isConjured(i: Int) = {
|
||||||
|
items(i).name.equals("Conjured Mana Cake")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user