【发布时间】:2010-10-20 12:39:32
【问题描述】:
众所周知,贝叶斯分类器是过滤垃圾邮件的有效方法。这些可以相当简洁(我们的只有几百个 LoC),但在获得任何结果之前,所有核心代码都需要预先编写。
但是,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 应该如何处理这种从最简单的代码发展代码以通过测试的情况不是正确的方法? (特别是如果事先知道最好的实现不能简单地进化)。
【问题讨论】:
标签: tdd machine-learning nlp classification