防禦性編程的兩種手段之一篡改用戶輸入

非防禦性編程:不做邊界判斷,不假設用戶輸入會出現極端情況。說白一點就是寫代碼沒有考慮邊界。

防禦性編程:考慮代碼有極端情況,以及有邊界存在。

防禦性有兩種手段:

1.一個是利用if語句將外部用戶輸入進行檢查,或者實時對用戶變量進行檢查,確保任何參與外部數據計算的過程變量都是合法的。這種做法就是會產生很多if。

2.另一種手段,就是修改輸入,使其不再可能出現異常情況,常見的做法就是拷貝用戶輸入,然後對用戶輸入進行補全(截斷,這個比較少用)。比如鏈表變量的哨兵僞節點等。

至於,進攻性編程,比較少用到,多數用於防止自己犯糊塗,然後給代碼加 assert 斷言。相信在座的各位都足夠有信心寫出用不到assert的代碼。

總結:

在這裏插入圖片描述

防禦性編程的第二個手段,就是修改輸入,使其不再可能出現異常情況,常見的做法就是拷貝用戶輸入,然後對用戶輸入進行補全(截斷,這個比較少用)。比如鏈表變量的哨兵僞節點等。

這個手段纔是高手常用的。劃重點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章