mirror of
https://github.com/emilybache/GildedRose-Refactoring-Kata.git
synced 2026-02-18 16:01:42 +00:00
pre README.md
This commit is contained in:
parent
1a746202c7
commit
b9ff3e1923
@ -133,4 +133,4 @@ PHPUnit `composer phpstan` can be run:
|
||||
ps
|
||||
```
|
||||
|
||||
## ffff
|
||||
|
||||
|
||||
@ -18,7 +18,6 @@ $items = [
|
||||
new Item('Backstage passes to a TAFKAL80ETC concert', 15, 20),
|
||||
new Item('Backstage passes to a TAFKAL80ETC concert', 10, 49),
|
||||
new Item('Backstage passes to a TAFKAL80ETC concert', 5, 49),
|
||||
// this conjured item does not work properly yet
|
||||
new Item('Conjured Mana Cake', 3, 6),
|
||||
];
|
||||
|
||||
|
||||
@ -1,47 +1,5 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
======================================
|
||||
Gilded Rose Requirements Specification
|
||||
======================================
|
||||
|
||||
Hi and welcome to team Gilded Rose. As you know, we are a small inn with a prime location in a
|
||||
prominent city ran by a friendly innkeeper named Allison. We also buy and sell only the finest goods.
|
||||
Unfortunately, our goods are constantly degrading in quality as they approach their sell by date. We
|
||||
have a system in place that updates our inventory for us. It was developed by a no-nonsense type named
|
||||
Leeroy, who has moved on to new adventures. Your task is to add the new feature to our system so that
|
||||
we can begin selling a new category of items. First an introduction to our system:
|
||||
|
||||
- All items have a SellIn value which denotes the number of days we have to sell the item
|
||||
- All items have a Quality value which denotes how valuable the item is
|
||||
- At the end of each day our system lowers both values for every item
|
||||
|
||||
Pretty simple, right? Well this is where it gets interesting:
|
||||
|
||||
+ Once the sell by date has passed, Quality degrades twice as fast
|
||||
- The Quality of an item is never negative
|
||||
- "Aged Brie" actually increases in Quality the older it gets
|
||||
- The Quality of an item is never more than 50
|
||||
- "Sulfuras", being a legendary item, never has to be sold or decreases in Quality
|
||||
- "Backstage passes", like aged brie, increases in Quality as its SellIn value approaches;
|
||||
Quality increases by 2 when there are 10 days or less and by 3 when there are 5 days or less but
|
||||
Quality drops to 0 after the concert
|
||||
|
||||
We have recently signed a supplier of conjured items. This requires an update to our system:
|
||||
|
||||
- "Conjured" items degrade in Quality twice as fast as normal items
|
||||
|
||||
Feel free to make any changes to the UpdateQuality method and add any new code as long as everything
|
||||
still works correctly. However, do not alter the Item class or Items property as those belong to the
|
||||
goblin in the corner who will insta-rage and one-shot you as he doesn't believe in shared code
|
||||
ownership (you can make the UpdateQuality method and Items property static if you like, we'll cover
|
||||
for you).
|
||||
|
||||
Just for clarification, an item can never have its Quality increase above 50, however "Sulfuras" is a
|
||||
legendary item and as such its Quality is 80 and it never alters.
|
||||
*/
|
||||
|
||||
|
||||
namespace GildedRose;
|
||||
|
||||
final class GildedRose
|
||||
@ -65,8 +23,7 @@ final class GildedRose
|
||||
if ($item->name === 'Backstage passes to a TAFKAL80ETC concert') {
|
||||
if ($item->sell_in <= 10 && $item->sell_in > 5) {
|
||||
$this->increaseQuality($item, 1);
|
||||
}
|
||||
elseif ($item->sell_in <= 5) {
|
||||
} elseif ($item->sell_in <= 5) {
|
||||
$this->increaseQuality($item, 2);
|
||||
}
|
||||
}
|
||||
@ -88,21 +45,17 @@ final class GildedRose
|
||||
if ($item->quality < 50) {
|
||||
$this->increaseQuality($item, 1);
|
||||
}
|
||||
} else {
|
||||
if ($item->name === 'Backstage passes to a TAFKAL80ETC concert') {
|
||||
$this->lowerQuality($item, $item->quality);
|
||||
} else {
|
||||
if ($item->quality > 0) {
|
||||
$this->lowerQuality($item, 1);
|
||||
}
|
||||
}
|
||||
} else if ($item->name === 'Backstage passes to a TAFKAL80ETC concert') {
|
||||
$this->lowerQuality($item, $item->quality);
|
||||
} else if ($item->quality > 0) {
|
||||
$this->lowerQuality($item, 1);
|
||||
}
|
||||
}
|
||||
$this->lowerSellIn($item, 1);
|
||||
$this->lowerSellIn($item);
|
||||
}
|
||||
}
|
||||
|
||||
private function lowerQuality(Item $item, int $amount)
|
||||
private function lowerQuality(Item $item, int $amount): void
|
||||
{
|
||||
if ($item->quality - $amount > 0) {
|
||||
$item->quality -= $amount;
|
||||
@ -111,7 +64,7 @@ final class GildedRose
|
||||
}
|
||||
}
|
||||
|
||||
private function increaseQuality(Item $item, int $amount)
|
||||
private function increaseQuality(Item $item, int $amount): void
|
||||
{
|
||||
if ($item->quality + $amount <= 50) {
|
||||
$item->quality += $amount;
|
||||
@ -120,8 +73,8 @@ final class GildedRose
|
||||
}
|
||||
}
|
||||
|
||||
private function lowerSellIn(Item $item, int $amount)
|
||||
private function lowerSellIn(Item $item): void
|
||||
{
|
||||
$item->sell_in -= $amount;
|
||||
$item->sell_in -= 1;
|
||||
}
|
||||
}
|
||||
@ -21,7 +21,7 @@ Sulfuras, Hand of Ragnaros, -1, 80
|
||||
Backstage passes to a TAFKAL80ETC concert, 14, 21
|
||||
Backstage passes to a TAFKAL80ETC concert, 9, 50
|
||||
Backstage passes to a TAFKAL80ETC concert, 4, 50
|
||||
Conjured Mana Cake, 2, 5
|
||||
Conjured Mana Cake, 2, 4
|
||||
|
||||
-------- day 2 --------
|
||||
name, sellIn, quality
|
||||
@ -33,7 +33,7 @@ Sulfuras, Hand of Ragnaros, -1, 80
|
||||
Backstage passes to a TAFKAL80ETC concert, 13, 22
|
||||
Backstage passes to a TAFKAL80ETC concert, 8, 50
|
||||
Backstage passes to a TAFKAL80ETC concert, 3, 50
|
||||
Conjured Mana Cake, 1, 4
|
||||
Conjured Mana Cake, 1, 2
|
||||
|
||||
-------- day 3 --------
|
||||
name, sellIn, quality
|
||||
@ -45,7 +45,7 @@ Sulfuras, Hand of Ragnaros, -1, 80
|
||||
Backstage passes to a TAFKAL80ETC concert, 12, 23
|
||||
Backstage passes to a TAFKAL80ETC concert, 7, 50
|
||||
Backstage passes to a TAFKAL80ETC concert, 2, 50
|
||||
Conjured Mana Cake, 0, 3
|
||||
Conjured Mana Cake, 0, 0
|
||||
|
||||
-------- day 4 --------
|
||||
name, sellIn, quality
|
||||
@ -57,7 +57,7 @@ Sulfuras, Hand of Ragnaros, -1, 80
|
||||
Backstage passes to a TAFKAL80ETC concert, 11, 24
|
||||
Backstage passes to a TAFKAL80ETC concert, 6, 50
|
||||
Backstage passes to a TAFKAL80ETC concert, 1, 50
|
||||
Conjured Mana Cake, -1, 1
|
||||
Conjured Mana Cake, -1, 0
|
||||
|
||||
-------- day 5 --------
|
||||
name, sellIn, quality
|
||||
|
||||
Loading…
Reference in New Issue
Block a user