軟體構造第六章複習心得

2021-10-07 04:31:49 字數 1393 閱讀 5246

第六章主要講解了如何增強程式的健壯性,即使在使用者不遵守規約時,即輸入不滿住前置條件時,我們程式設計師也要保證程式不崩潰,能夠繼續執行。

本章主要利用的工具即是,異常和斷言,需要掌握的思想是防禦式程式設計。

先來看一下異常:

錯誤與異常分類如下:

內部錯誤:程式設計師通常無能為力,一旦發生,想辦法讓程式優雅的結束

使用者輸入錯誤(有爭議), 裝置錯誤, 物理限制

exception:

異常:你自己程式導致的問題,可以捕獲、可以處理

其中runtimeexception: 類的內部**錯誤(不應該捕獲,應該避免這些錯誤)

其他異常:呼叫類的**錯誤(應該捕獲,使用者輸入錯誤,應該預料到然後進行處理)

我們需要處理的即使其他異常,而需要避免runtimeexception。

異常的具體用法,即使用throws,throw,try,catch,finally等語句即可

再看斷言:

斷言:在開發階段的**中嵌入,檢驗某些「假設」是否 成立。若成立,表明程式執行正常,否則表明存在錯誤。

斷言即是對**中程式設計師所做假設的文件化,也不會影響執行時效能 (在實際使用時,assertion都會被disabled)

斷言可用於驗證:

內部不變數

表示不變數

控制流不變數:

方法的前置條件

方法的後置條件

當不滿足前提條件時,此**通過丟擲斷言錯誤異常來終止程式。呼叫方的錯誤的影響被阻止傳播。

斷言的具體用法,使用assert語句判斷十分滿足要求即可。

在程式什麼時候使用斷言和異常,這才是重點!

一般來說,我們需要判斷的條件就是前置條件和後置條件,前者需要使用者輸入符合標準,我們無法相信使用者的輸入,故使用異常處理,增強程式健壯性;後者需要我們的輸出符合標準,那麼只要程式設計正確都是可以達到要求的,故使用斷言,使得錯誤盡早發生,方便程式設計師修改**。

當然前置條件也有使用斷言判斷的情況,即只被程式設計師自己呼叫的內部adt,其前置條件完全可以用斷言判斷,因為一旦出錯,也不是使用者的問題,而是呼叫方的**錯誤,程式設計師完全可以通過修改程式其正確

最後提一下防禦式程式設計:

1.保護程式不受無效輸入的影響

對來自外部的數 據源要仔細檢查,例如:檔案、網路資料、使用者輸入等

對每個函式的輸入 引數合法性要做仔細檢查,並決定如何處理非法輸入

barricade 設定路障

類的public方法 接收到的外部資料都應被認為是dirty的,需要處理乾淨再傳遞到 private方法——隔離艙

「隔離艙」外部的函式應使用異常處理,「隔離艙」內的函式應使用 斷言。

第六章複習

一.迴圈語句 while do while.for 1.while 迴圈控制表示式 括號內容為真時執行,假時退出。語句序列 迴圈體 2.do while 迴圈控制表示式 真實執行假時退出。注意 該迴圈體內語句至少執行一次。3.for 初始化表示式 迴圈控制表示式 增值表示式 使用的一般原則 迴圈次數...

pandas第六章心得

首先這次學習的是pandas的缺失資料這一部分,下面來談談我的收穫 缺失觀測及其型別,知道基礎的檢視方法,包括head 和tail 會用isna和notna方法來觀測缺失值,知道了對series和dataframe使用都會返回布林列表,知道怎麼檢視缺失值的所以的行和列 還知道了三種缺失符號,分別是n...

軟體構造總結 第六章 (一)

正確性 錯誤輸入報錯。健壯性 錯誤輸入也要維持執行。可靠性內部介面傾向於正確性 外部介面傾向於健壯性 衡量指標 平均失效時間 真正失效的時間 系統修復的時間 三個階段 coding assertion exception testing debug 異常 介面 throwable error 非程式...