我們先看一個函數(shù):函數(shù)的功能完成1~10的加法。
int Add1to10(int a, int b)
{
return a +b;
}
但是一般我們還需要加上幾條代碼:
int Add1to10(int a, int b)
{
assert(a >= 1 && a <= 10);
assert(b >= 1 && b < =10);
if ( a < 1 || a > 10 || b < 1 || b > 10)
return -1;
return a +b;
}
加上上面幾條代碼的作用是檢查函數(shù)的輸入?yún)?shù),當參數(shù)不正確的時候不光要在返回值上得到體現(xiàn),而且會觸發(fā)assert斷言,提醒我們參數(shù)有誤。
斷言式編程體現(xiàn)一個編程的思想,在我們的程序執(zhí)行偏離預(yù)想的路線時給出提醒。當程序執(zhí)行偏離預(yù)想的路線時一般會出現(xiàn)兩種可能:即斷言以上的程序沒有理解下面程序的調(diào)用條件、或斷言以下的程序需要接受更為寬泛輸入條件。以下分別討論修改方法:
1、如果函數(shù)的輸入?yún)?shù)是我們編程的一個疏漏,我們認為根本就不應(yīng)該出現(xiàn)或產(chǎn)生這樣的值,那我們應(yīng)該修改調(diào)用函數(shù)處的代碼,避免非預(yù)想的值出現(xiàn)。
2、如果無法避免出現(xiàn)或者產(chǎn)生一個非法輸入值,那我們要么在函數(shù)調(diào)用處加入判斷,產(chǎn)生符合條件的值時調(diào)用函數(shù),不符合參數(shù)條件else處理;要么修改函數(shù),使函數(shù)可以接受更為寬泛輸入條件,并調(diào)整斷言內(nèi)容和參數(shù)判斷邏輯。
斷言不僅可以出現(xiàn)在函數(shù)的參數(shù)檢查的場合,也可以出現(xiàn)在其他的上下文調(diào)用的場合。而且它還會隨著程序的開發(fā)進程逐漸的增加、刪除和調(diào)整。它可以驗證程序是按照我們預(yù)想的思路在執(zhí)行,當出現(xiàn)意外時及時的給出提醒,提醒我們修正程序或者自己的思路。
posted on 2008-08-19 10:00
胡滿超 閱讀(820)
評論(0) 編輯 收藏 引用