在我的大多数C++项目中,我频繁使用的断言声明如下:测试用例VS ASSERTION声明
int doWonderfulThings(const int* fantasticData)
{
ASSERT(fantasticData);
if(!fantasticData)
return -1;
// ,,,
return WOW_VALUE;
}
但TDD社会似乎喜欢喜欢做这样的事情:
int doMoreWonderfulThings(const int* fantasticData)
{
if(!fantasticData)
return ERROR_VALUE;
// ...
return AHA_VALUE;
}
TEST(TDD_Enjoy)
{
ASSERT_EQ(ERROR_VALUE, doMoreWonderfulThings(0L));
ASSERT_EQ(AHA_VALUE, doMoreWonderfulThings("Foo"));
}
只是我体验第一种方法让我消除了这么多微妙的错误。但TDD方法是处理遗留代码的非常聪明的想法。
“Google” - 他们将“第一种方法”与“用救生背心游走海岸,没有任何安全警卫游泳海洋”相比较。
哪一个更好? 哪一个使软件健壮?