--- robots: noindex, nofollow tags: refactoring --- # Kata ## 題目 歡迎來到鑲金玫瑰(Gilded Rose)團隊。如你所知,我們是主城(暴風城)中的一個小旅店,店主非常友好,名叫 Allison。我們也售賣最好的物品。不幸的是,物品品質會隨著銷售期限的接近而不斷下降。 我們有一個系統來更新庫存信息。系統是由一個火車王(魔獸世界中導致團滅的豬隊友)Leeroy 所開發的,他已經不在這了。 你的任務是添加新功能,這樣我們就可以售賣新的物品。 先介紹一下我們的系統: - 每種物品(`Item`)都具備一個銷售期限(`SellIn`),表示我們要在多少天之前把物品賣出去 - 每種的物品都具備品質值 `Quality`,表示物品的品質 - 每天結束時,系統會降低每種物品的這兩個數值(`UpdateQuality`) 很簡單吧?這還有些更有意思的: - 物品的品質 `Quality` 永遠不會為負值 - 物品的品質 `Quality` 永遠不會超過 `50` - 一旦銷售期限過期,品質 `Quality` 會以雙倍速度(`2`)加速下降 - _陳年布利乳酪_(Aged Brie)的品質 `Quality` 會隨著時間推移而提高(`1`) - _後台通行證_(Backstage passes)與 _陳年布利乳酪_ 類似,其品質 `Quality` 會隨著時間推移而提高 - 當還剩 10 天或更少的時候,品質 `Quality` 每天提高 `2` - 當還剩 5 天或更少的時候,品質 `Quality` 每天提高 `3` - 但一旦過期,品質 `Quality` 就會降為 `0` - 傳奇物品 _薩弗拉斯—炎魔拉格納羅斯之手_ (Sulfuras)永不過期,也不會降低品質 `Quality` 我們最近簽約了一個召喚物品供應商。這需要對我們的系統進行升級: - _召喚物_(Conjured)的品質 `Quality` 下降速度比正常物品快一倍 只要系統還能正常工作,請隨意對 **UpdateQuality()** 函數進行修改和添加新代碼。然而,不要修改 `Item` 類或其屬性,因為那屬於角落裡的地精,他會非常憤怒地爆你頭,因為他不相信代碼共享所有制(如果你願意,你可以將 `UpdateQuality` 方法和 `Items` 屬性改為靜態的,我們會掩護你的)。 再次澄清,每種物品的品質不會超過 `50`,然而 _薩弗拉斯—炎魔拉格納羅斯之手_(Sulfuras)是一個傳奇物品,因此它的品質是80且永遠不變。 > 題目翻譯,部分參考了 [Repo](https://github.com/emilybache/GildedRose-Refactoring-Kata/blob/master/GildedRoseRequirements_zh.txt/) 的譯文。 ## GitHub Repo 大家請挑自己熟悉的語言來練習。 https://github.com/emilybache/GildedRose-Refactoring-Kata > [Java 語言版本的單元測試請參考這個 gist](https://gist.github.com/adelatorrefoss/ebc658b3e0054913dced80c8fe384de0) > 修改歷程參考(請由上到下查看):https://github.com/yaosiang/GildedRose-Refactoring-Kata/compare/6a12fad...main
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up