7、软件开发中的迭代与重构实践

软件开发中的迭代与重构实践

1. 从快速反馈中学习

在软件开发过程中,小步前进有着显著的优势。当引入新的失败情况时,我们能确切知道刚刚做了什么,从而在特定的上下文中分析失败原因。例如,在开发某个算法时,出现了标记中减号比预期多一个的问题。

回顾之前将单个迭代器拆分为两个之前的 guess() 方法,其代码块采用了 if elsif else 结构,其中 elsif 分支负责向标记中添加减号,且只有在 if 分支未执行时才会执行。

进一步查看 number_match? 方法,会发现它只检查数字是否在密码中,却没有确保该数字不是精确匹配。正确的数字匹配定义应该是猜测中的数字出现在密码的其他位置。于是,我们对 number_match? 方法进行更新:

def number_match?(guess, index)
  @secret.include?(guess[index]) && !exact_match?(guess, index)
end

更新后运行测试用例,所有测试都通过,场景测试也都能正常运行。不过,我们跳过了上一轮红 - 绿 - 重构循环中的重构步骤,所以需要回顾标记算法的实现,确保其清晰且能准确表达意图。

在这个过程中,我们学到了从小步骤开发中受益的重要性。如果在拆分迭代器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值