Trong hầu hết các dự án tôi sử dụng nhiều tuyên bố ASSERTION C++ của tôi như sau:Test Cases VS tuyên bố ASSERTION
int doWonderfulThings(const int* fantasticData)
{
ASSERT(fantasticData);
if(!fantasticData)
return -1;
// ,,,
return WOW_VALUE;
}
Nhưng cộng đồng TDD có vẻ như để thưởng thức làm một cái gì đó như thế này:
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"));
}
Chỉ cần với tôi các phương pháp tiếp cận kinh nghiệm đầu tiên cho phép tôi loại bỏ rất nhiều lỗi tinh vi. Nhưng phương pháp tiếp cận TDD là ý tưởng rất thông minh để xử lý các mã cũ.
"Google" - chúng so sánh "PHƯƠNG PHÁP ĐẦU TIÊN" để "Đi bộ trên bờ với áo phao, bơi đại dương mà không có bất kỳ người bảo vệ an toàn nào".
Cái nào tốt hơn? Cái nào làm cho phần mềm mạnh mẽ?