自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

講述C++語(yǔ)言的種種問(wèn)題及其技巧說(shuō)明

開(kāi)發(fā) 后端
本文講述恰當(dāng)、靈活的使用C++語(yǔ)言進(jìn)行主動(dòng)調(diào)試,能夠極大提高程序的穩(wěn)定性和安全性,減少調(diào)試時(shí)間,提高工作效率。

C++語(yǔ)言標(biāo)準(zhǔn)委員會(huì)現(xiàn)主席Herb Sutter老兄以及他編寫(xiě)的Exceptional系列(已出版的包括:《Exceptional C++》、《More Exceptional C++》、以及《Exceptional C++ Style》)為甚。。

主動(dòng)調(diào)試和契約編程相輔相成,共同保證軟件開(kāi)發(fā)的質(zhì)量。契約編程相當(dāng)于經(jīng)濟(jì)生活中簽訂的各種合同,而主動(dòng)調(diào)試相當(dāng)于某方不遵守合同時(shí)采取的法律懲罰措施。
各種開(kāi)發(fā)語(yǔ)言和開(kāi)發(fā)工具都提供這些調(diào)試語(yǔ)句,標(biāo)準(zhǔn)C++提供了assert函數(shù),MFC提供了ASSERT調(diào)試宏幫助我們進(jìn)行主動(dòng)調(diào)試,在實(shí)際工作中,建議統(tǒng)一使用MFC的ASSERT調(diào)試宏。

參數(shù)檢查
對(duì)于編寫(xiě)的函數(shù),除了明確的指定契約外,在函數(shù)開(kāi)始處應(yīng)該對(duì)傳入的參數(shù)進(jìn)行檢查,確保非法參數(shù)傳入時(shí)立即報(bào)告錯(cuò)誤信息。例如:

  1. BOOL GetPathItem ( int i , LPTSTR szItem , int iLen )  
  2. {  
  3. ASSERT ( i > 0 ) ;  
  4. ASSERT ( NULL != szItem ) ;  
  5. ASSERT ( ( iLen > 0 ) && ( iLen < MAX_PATH ) ) ;  
  6. ASSERT ( FALSE == IsBadWriteStringPtr ( szItem , iLen ) ) ;  

這樣的檢查只能夠排除指針為空的情況,但是如果指針指向的是非法地址,或者指針指向的對(duì)象并不是我們需要的類型,上面的例子就沒(méi)有辦法檢查出來(lái),而是統(tǒng)統(tǒng)認(rèn)為是正確的。完整的檢查應(yīng)該如下:

  1. // An example of checking only a part of the error condition  
  2. BOOL EnumerateListItems ( PFNELCALLBACK pfnCallback )  
  3. {  
  4. ASSERT ( NULL != pfnCallback ) ;  
  5.  

恰當(dāng)?shù)卦诖a中使用ASSERT,對(duì)bug檢測(cè)和提高調(diào)試效率有極大的幫助,下面舉個(gè)簡(jiǎn)單的例子加以說(shuō)明。

  1. switch( nType )  
  2. {  
  3. case GK_ENTITY_POINT:  
  4. // do something  
  5. break;  
  6. case GK_ENTITY_PLINE:  
  7. // do something  
  8. break;  
  9. default:  
  10. ASSERT( 0 );  

在上面的例子中,switch語(yǔ)句僅僅處理了GK_ENTITY_POINT和GK_ENTITY_PLINE兩種情況,應(yīng)該是系統(tǒng)中當(dāng)時(shí)只需要處理這兩種情況,但是如果后期系統(tǒng)需要處理更多的情況,而此時(shí)上面這部分代碼又沒(méi)有及時(shí)更新,或者是因?yàn)殚_(kāi)發(fā)人員一時(shí)疏忽遺漏了。

一個(gè)可能導(dǎo)致系統(tǒng)錯(cuò)誤或者崩潰的bug就出現(xiàn)了,而使用ASSERT可以及時(shí)地提醒開(kāi)發(fā)人員他的疏忽,盡可能快的消滅這個(gè)bug。還有一些情況,在開(kāi)發(fā)人員編寫(xiě)代碼時(shí),如果能夠確信在某一點(diǎn)出現(xiàn)情況A就是錯(cuò)誤的,那么就可以在該處加上ASSERT,排除情況A。#t#

綜上所述,恰當(dāng)、靈活的使用ASSERT進(jìn)行主動(dòng)調(diào)試,能夠極大提高程序的穩(wěn)定性和安全性,減少調(diào)試時(shí)間,提高工作效率。綜上所述,恰當(dāng)、靈活的使用ASSERT進(jìn)行主動(dòng)調(diào)試,能夠極大提高程序的穩(wěn)定性和安全性,減少調(diào)試時(shí)間,提高工作效率。

責(zé)任編輯:chenqingxiang 來(lái)源: 天極
相關(guān)推薦

2010-01-12 10:11:36

學(xué)習(xí)C++語(yǔ)言

2010-01-13 14:17:53

C++編譯語(yǔ)言

2010-01-12 10:40:22

C++程序員

2010-01-11 13:37:31

C++語(yǔ)言

2009-12-24 17:37:26

ADO分頁(yè)

2010-01-12 15:24:48

C++語(yǔ)言

2010-01-13 10:31:35

C++代碼

2010-01-13 16:44:03

C++

2010-01-13 15:51:44

C++編程語(yǔ)言

2010-01-11 15:47:37

C++編譯

2010-01-13 13:58:49

C++編譯模式

2010-01-11 15:55:51

C++語(yǔ)言

2010-01-13 16:08:31

C++語(yǔ)言

2010-01-12 18:35:45

C++語(yǔ)言

2010-01-11 10:19:57

C++開(kāi)發(fā)工具

2010-01-07 13:11:09

設(shè)置JSON

2010-01-21 13:33:44

C++基類

2010-01-12 16:12:47

C++單元測(cè)試

2010-01-13 09:48:34

Boost庫(kù)

2010-01-28 16:05:09

C++風(fēng)格與技巧
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)