1. 程式人生 > >防禦式編程

防禦式編程

數據 崩潰 防禦式編程 敵人 轉換 編程 錯誤數據 就是 cto

最近在進行一個C/S模型程序集成測試時屢次出現程序崩潰而費時去尋找bug的問題。為此我和團隊成員一起探討了何謂”防禦式編程“,為何要做”防禦式編程“。

何謂防禦式編程,“防禦式編程的中心思想是:子程序不因傳入錯誤數據而被破壞,哪怕是有其他程序產生的錯誤數據。”引自《代碼大全》p187——(防禦式編程)。說說我們寫程序常有的誤區,比如我們會假定某處一定存在我們要加載的文件;比如我們會假定客戶端一定會傳入服務端我們想要的數據格式;比如我們會假定對方提供的插件一定是符合主程序的規格;......但是一切不會如我們預期的這樣理想,往往對程序造成的結果就是出現一些不知所雲的bug,甚至出現程序崩潰。 所以我們要進行防禦式編程,當我們在進行接口或者子程序的編寫需要和其他接口和程序進行數據交流時,請不要相信“他們”,我們應該對他們給我們的數據首先進行數據規則的判斷,如果不符合我們的規則,我們可以拒絕他們,或者可以轉換為合法的數據來保護自身。引用社會上的一句話,“在這個缺乏誠信的社會,保護自己的最好方法就是別輕信他人或者做好自己”。 理解了防禦式編程的思想,下面我們就要開始建立防線。在這道防線裏我們可以使用斷言技術來處理絕不應該發生的狀況,用錯誤處理代碼來處理預期會發生的狀況,用異常技術來解決自己無法處理的狀況,用隔離程序來保護自己,增加各種輔助調試的代碼和日誌,我們還可以采用積極進攻的策略來讓“敵人”來攻擊我們用來測試我們的防線然後穩固他。 做到寫出固若金湯的程序也不是一朝一夕的事,請你在寫每一個子程序時都用最嚴格的策略保護他,謹慎的修補他,慢慢的你就會擁有一個無法攻破的城堡。 http://blog.51cto.com/yaocoder/1035789

防禦式編程