本文轉自:http://www.shnenglu.com/humanchao/archive/2008/08/19/59309.html
我們先看一個函數:函數的功能完成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;
}
加上上面幾條代碼的作用是檢查函數的輸入參數,當參數不正確的時候不光要在返回值上得到體現,而且會觸發assert斷言,提醒我們參數有誤。
斷言式編程體現一個編程的思想,在我們的程序執行偏離預想的路線時給出提醒。當程序執行偏離預想的路線時一般會出現兩種可能:即斷言以上的程序沒有理解下面程序的調用條件、或斷言以下的程序需要接受更為寬泛輸入條件。以下分別討論修改方法:
1、如果函數的輸入參數是我們編程的一個疏漏,我們認為根本就不應該出現或產生這樣的值,那我們應該修改調用函數處的代碼,避免非預想的值出現。
2、如果無法避免出現或者產生一個非法輸入值,那我們要么在函數調用處加入判斷,產生符合條件的值時調用函數,不符合參數條件else處理;要么修改函數,使函數可以接受更為寬泛輸入條件,并調整斷言內容和參數判斷邏輯。
斷言不僅可以出現在函數的參數檢查的場合,也可以出現在其他的上下文調用的場合。而且它還會隨著程序的開發進程逐漸的增加、刪除和調整。它可以驗證程序是按照我們預想的思路在執行,當出現意外時及時的給出提醒,提醒我們修正程序或者自己的思路。
posted on 2012-04-12 12:58
王海光 閱讀(632)
評論(0) 編輯 收藏 引用 所屬分類:
其他