15、重构遗留代码:以 Gilded Rose 为例

Gilded Rose重构实践

重构遗留代码:以 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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值