软件开发中的迭代与重构实践
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万+

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



