国产chinesehdxxxx野外,国产av无码专区亚洲av琪琪,播放男人添女人下边视频,成人国产精品一区二区免费看,chinese丰满人妻videos

C++ 先決條件

2023-03-20 16:50 更新

通常當(dāng)你寫(xiě)函數(shù)時(shí)會(huì)對(duì)接收的參數(shù)做了隱含的假設(shè)。如果這些假設(shè)成立,程序沒(méi)有問(wèn)題;如果假設(shè)不成立,你的程序可能就會(huì)崩潰了。
為了讓你的程序更為健壯,將你的假設(shè)明確,以程序文檔的方式寫(xiě)下來(lái)或?qū)懘a來(lái)進(jìn)行檢查。
比如我們觀察calculateCartesian方法。是否存在對(duì)當(dāng)前對(duì)象進(jìn)行了假設(shè)呢?沒(méi)錯(cuò),我們假設(shè)極坐標(biāo)系的標(biāo)志量已經(jīng)設(shè)置了并且mag和theta的值是有效的。如果假設(shè)不成立,那么這個(gè)函數(shù)的結(jié)果無(wú)意義。
一種做法是對(duì)函數(shù)添加注釋說(shuō)明先決條件以警告他人。

void Complex::calculateCartesian () 
// 先決條件:當(dāng)前對(duì)象包含有效的極坐標(biāo)值,其極坐標(biāo)標(biāo)志量已設(shè)定。
// 后置條件:當(dāng)前對(duì)象包含有效的笛卡爾坐標(biāo)系和極坐標(biāo)系的值,兩個(gè)標(biāo)志量皆已設(shè)置。
{ 
        real = mag * cos (theta); 
        imag = mag * sin (theta); 
        cartesian = true; 
}   

同時(shí),我添加了后置條件,即我們認(rèn)為函數(shù)執(zhí)行完畢后為真的事情。
這些注釋對(duì)于閱讀你代碼的人很有用,但更好的辦法是通過(guò)代碼來(lái)檢查先決條件,并輸出合適的錯(cuò)誤信息:

void Complex::calculateCartesian () 
{ 
        if (polar == false) { 
                cout << "calculateCartesian failed because the polar representation is invalid"  << endl; 
                exit (1); 
        } 
        real = mag * cos (theta); 
        imag = mag * sin (theta); 
        cartesian = true; 
} 

exit函數(shù)會(huì)使程序很快的退出執(zhí)行。返回值是一個(gè)錯(cuò)誤碼以告訴系統(tǒng)(或該程序執(zhí)行者)某些錯(cuò)誤發(fā)生。
這種錯(cuò)誤檢測(cè)方式很是常見(jiàn),于是C++提供了一個(gè)內(nèi)置函數(shù)來(lái)檢查先決條件并打印錯(cuò)誤信息。如果你包含了assert.h頭文件,你可以使用一個(gè)以布爾值或條件表達(dá)式為參數(shù)的assert函數(shù)。只要參數(shù)為真,assert函數(shù)就啥也不做。如果參數(shù)為假,assert打印一個(gè)錯(cuò)誤信息并退出,用法如下:

void Complex::calculateCartesian () 
{ 
        assert (polar); 
        real = mag * cos (theta); 
        imag = mag * sin (theta); 
        cartesian = true; 
        assert (polar && cartesian); 
} 

第一句assert檢查先決條件(事實(shí)上只是一部分先決條件),第二句assert檢查后置條件。
在我的開(kāi)發(fā)環(huán)境中,當(dāng)一個(gè)斷言失敗時(shí)會(huì)得到以下信息:

Complex.cpp:63: void Complex::calculatePolar(): Assertion ‘cartesian’ failed.   
Abort  

信息中會(huì)有許多內(nèi)容可以幫助我跟蹤錯(cuò)誤,包括文件名和斷言失敗的出錯(cuò)行,斷言語(yǔ)句的內(nèi)容和所在函數(shù)名。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)