在this question的代碼讓我覺得測試用例和斷言語句
assert(value>0); //Precondition
if (value>0)
{
//Doit
}
我從來不寫if語句。斷言是足夠的/所有你可以做。 「早崩潰,死機經常」
CodeComplete狀態:
- 斷言語句使應用程序正確
- 的,如果測試使得應用強大的
我不認爲您已通過更正無效輸入值或跳過代碼使應用程序更健壯:
assert(value >= 0); //Precondition
assert(value <= 90); //Precondition
if(value < 0) //Just in case
value = 0;
if (value > 90) //Just in case
value = 90;
//Doit
這些更正是基於您對外界做出的假設。 只有調用者知道你的函數有什麼「有效的輸入值」,並且他在調用你的函數之前必須檢查它的有效性。
套用CodeComplete: 「現實世界的程序成爲太亂了,當我們不僅僅依靠斷言」。
問:我錯了,stuborn,愚蠢,太不守...
我同意你的意見。斷言的全部內容是在測試過程中執行完整性檢查,這些檢查在生產中執行起來太昂貴。它們的功能與例外根本不同。 – Galik 2017-09-11 09:04:17