然而,测试驱动开发(TDD)方法要求只能编写最少量的代码以通过测试,因此,考虑以下方法签名:
bool IsSpam(string text)
以下的文本串显然是垃圾邮件:
"Cheap generic viagra"
我能写的最少量的代码是:
bool IsSpam(string text)
{
return text == "Cheap generic viagra"
}
现在我可能会添加另一条测试消息,例如:
"Online viagra pharmacy"
我可以将代码更改为以下内容:
bool IsSpam(string text)
{
return text.Contains("viagra");
}
直到某个时候,代码变成了字符串检查、正则表达式等一团糟的东西,因为我们是通过 不断发展 它而不是从一开始就思考并以不同的方式编写它。
那么,在这种情况下,TDD应该如何运作呢?(特别是如果事先已知最佳实现不能轻易地演变)