防禦性程式設計

2021-05-25 22:10:38 字數 853 閱讀 6062

(2010-6-29

~30)斷言:斷言是乙個肯定的語句。在程式執行過程中只要斷言恒為真,程式就正確。

斷言條件只能包含不會修改程式狀態的測試條件。

assert(

條件);

包含在標頭檔案

中。#ifdef ndebug

#define assert(condition)((void)0)

#else

void assertimpl(const char*, const char*, long);

#define assert(condition) /

((condition) ? (void)0 : assertimpl(???))

#endif

如果condition

為真,程式就正常執行;否則,就說明程式異常,這時會中斷程式執行,輸出引發斷言錯誤的表示式、它所在的檔名和行號列印出來並結束程式的執行。

當在debug

模式時,斷言起作用,非

debug

(ndebug

)時,斷言就不作用了。因為斷言會影響到程式的執行效率,所以通常在發放版本時就

#define ndebug

把斷言關閉。

要知道什麼情況下該使用斷言什麼情況下該使用異常處理。不是所有情況下都應該使用斷言,譬如:如果某個條件不完全在程式的控制之下,那麼就不應該使用斷言。任何時候使有斷言來檢測任何不變數都是合適的,包括在乙個函式結束時測試後置條件,將這種方法用於維護物件狀態的類成員函式特別合適。

(cppunit

自動單元測試框架)

測試時考慮:

1)邊界條件

2)函式是否會被破壞掉

3)什麼情況會造成程式的破壞

防禦性程式設計

1,防禦性程式設計。必要時應當考慮採取保護性拷貝的手段來保護內部的私有資料,先來看下面這個例子 pubic final class period public date getstart public date getend 這個類存在兩個不安全的地方,首先來看第乙個攻擊 date start ne...

《Windows核心程式設計》 防禦性程式設計 斷言

防禦性程式設計是提高軟體質量技術的有益輔助手段,它的主要思想是 子程式應該不因傳入錯誤資料而被破壞,哪怕是由其他子程式產生的錯誤資料。防禦性程式設計關鍵在於嚴格的輸入檢查 預期的錯誤處理方法。下面介紹使用斷言來進行防禦性程式設計。斷言通常是乙個例程 routine 或乙個巨集 macros 斷言通常...

《Windows核心程式設計》 防禦性程式設計 斷言

防禦性程式設計是提高軟體質量技術的有益輔助手段,它的主要思想是 子程式應該不因傳入錯誤資料而被破壞,哪怕是由其他子程式產生的錯誤資料。防禦性程式設計關鍵在於嚴格的輸入檢查 預期的錯誤處理方法。下面介紹使用斷言來進行防禦性程式設計。斷言通常是乙個例程 routine 或乙個巨集 macros 斷言通常...