先介绍一下我们的系统:
- 每种物品都具备一个销售期限
SellIn,表示我们要在多少天之前把物品卖出去 - 每种物品都具备品质值
Quality,表示物品的品质 - 每天结束时,系统会降低每种物品的这两个数值
很简单吧?这还有些更有意思的:
- 一旦销售期限过期,品质
Quality会以双倍速度加速下降 - 物品的品质
Quality永远不会为负值(即减到0为止) - "Aged Brie"(陈年布利奶酪)的品质
Quality会随着时间推移而提高 - 物品的品质
Quality永远不会超过50 - 传奇物品"Sulfuras"(萨弗拉斯—炎魔拉格纳罗斯之手)永不过期,也不会降低品质
Quality(恒为80) - "Backstage passes"(后台通行证)与"Aged Brie"(陈年布利奶酪)类似,其品质
Quality会随着时间推移而提高;当还剩10天或更少的时候,品质Quality每天提高2;当还剩5天或更少的时候,品质Quality每天提高3;但一旦过期,品质就会降为0
请随意对GildedRose.cpp中 updateQuality() 函数进行修改和添加新代码,只要系统还能正常工作,但不要修改Item类或其属性。我们没有提供单元测试,只是有一些简单的文字输出,你应当保证重构前后的输出不变。
你可以先跑一遍原代码,将输出结果存储在文件中;随后进行重构,再将重构后输出结果存储在文件中。
在Windows中,你可以使用
FC 1.txt 2.txt来比较两个文件的差异;在Linux和MacOS中,你可以使用
diff 1.txt 2.txt来比较两个文件的差异。
在重构完代码后,你可以试试是否方便加入下面的功能,以检验你的重构是否好用。
我们最近签约了一个召唤物品供应商。这需要对我们的系统进行升级:
- "Conjured"(召唤物品)的品质
Quality下降速度比正常物品快一倍