大多數(shù)程序員對(duì)于自己編寫的代碼都是非常自信的。他們相信自己編寫的代碼,那些低級(jí)的問題在他的代碼中是不可能發(fā)生的。 比如,他們相信:
但是這些不可能發(fā)生的事情在某種特定的情況下死也是有可能發(fā)生的。 所以,優(yōu)秀的程序員不是用嘴來(lái)斷言的,他們會(huì)在程序中使用斷言來(lái)檢查這些不可能發(fā)生的情況。
在大多數(shù)C和C++實(shí)現(xiàn)中,程序員都能找到用于斷言的工具——assert或_assert宏。程序員可以使用他們來(lái)檢查那些不可能發(fā)生的情況是否真的不會(huì)發(fā)生。 比如: 如果要確認(rèn)傳入的指針不應(yīng)該是NULL,那么就檢查它: 如果要檢查一個(gè)排序算法是否能正常工作,也可以使用斷言: 當(dāng)斷言失敗的時(shí)候會(huì)調(diào)用錯(cuò)誤處理器或者生成異常,這意味著不該發(fā)生的情況發(fā)生了。程序員需要就此分析并查找原因,修改代碼直至斷言成功。 通過使用斷言對(duì)編碼時(shí)的各種假設(shè)進(jìn)行檢查和驗(yàn)證,這可以使得代碼避免很多的錯(cuò)誤。 這正是: 編程假設(shè)有很多,不聞不問理不合 使用斷言來(lái)判定,減少錯(cuò)誤獲益多 參考書目:程序員修煉之道:從小工到專家,作者:(美)亨特(Hunt,A.),(美)托馬斯(Thomas,D.),出版社:電子工業(yè)出版社 |
|