在寫代碼之前,要考慮單元測試。如果能夠設(shè)計全面的單元測試用例并在代碼中體現(xiàn)出來,那么寫出的代碼自然也就是完整正確的了。通常我們從功能測試、邊界測試和負面測試三方面來設(shè)計測試用例。 其中,負面測試是指當輸入不符合要求的時候,程序還能做出合理的錯誤處理。
函數(shù)用返回值來告知調(diào)用者是否出錯,如很多Windows的API。其缺點是使用不便。
設(shè)置一個全局變量,當發(fā)生錯誤時改變該變量的值,其缺點是可能調(diào)用者會忘記檢查該變量。
當函數(shù)運行出錯時,拋出一個異常。我們能顯式地劃分程序正常運行的代碼塊(try模塊)和處理異常的代碼塊(catch模塊),邏輯比較清晰。
魯棒性對軟件開發(fā)非常重要,提高代碼的魯棒性的有效途徑是進行防御性編程,它是指一種編程習慣,是指預(yù)見在什么地方可能會出現(xiàn)問題,并為這些可能出現(xiàn)的問題制定處理方式。比如試圖打開文件時發(fā)現(xiàn)文件不存在,我們可以提示用戶檢查文件名和路徑;當服務(wù)器連接不上時,我們可以試圖連接備用服務(wù)器等。 在面試中,最簡單也最實用的防御性編程就是在函數(shù)入口添加代碼以驗證用戶輸入的參數(shù)是否符合要求。
由于計算機中的小數(shù)表示存在精度限制,所以判斷兩個小數(shù)是否相等不能用普通的if(a==b),而是應(yīng)該用if( abs(a-b)<1e-6 )。
當處理整數(shù)時,要考慮到如果該整數(shù)特別大應(yīng)該怎么辦?這時候應(yīng)該用string來表示和處理。
新聞熱點
疑難解答