重构遗留代码:以 Gilded Rose 为例
1. 抽象与代码重复的思考
在软件开发中,缺失抽象可能会在代码里表现为数据重复。寻找关键抽象所付出的努力是值得的,这会让代码量减少,并且得到更优雅的解决方案。就像在一些实践中,即便采用测试驱动开发(TDD),也不能神奇地创造出好的设计。作为开发者,在重构阶段应用良好的设计原则至关重要。认识到数据重复可能隐藏着关键的领域概念,对设计出更好的代码非常关键。
2. Gilded Rose 问题背景
Gilded Rose 是一家位于繁华城市的小旅馆,由友好的店主 Allison 经营,主要买卖优质商品。但商品的质量会随着销售日期临近而不断下降,现有的库存更新系统是由 Leroy 开发的,现在需要为系统添加新功能,以便开始销售新类别的商品。
系统中所有商品都有两个关键属性:
- SellIn 值:表示剩余销售天数。
- Quality 值:表示商品的价值。
每天结束时,系统会降低每个商品的这两个值。具体规则如下:
| 商品类型 | 规则描述 |
| — | — |
| 普通商品 | 销售日期过后,Quality 值下降速度加倍;Quality 值不会为负 |
| 陈年布里干酪(Aged Brie) | 越久 Quality 值越高;Quality 值不超过 50 |
| 拉格纳罗斯之手(Sulfuras) | 无需销售,Quality 值恒定为 80,不会改变 |
| 后台通行证(Backstage passes) | 随着 SellIn 值临近,Quality 值增加;SellIn 为 10 天或更少时,Qualit
Gilded Rose重构实践
超级会员免费看
订阅专栏 解锁全文
95

被折叠的 条评论
为什么被折叠?



