7.3Assertions and Defensive Programming断言与防御式编程
7.3Assertions and Defensive Programming斷言與防御式編程
?
1.回憶:設計ADT
2.Assertions?聲稱
--What to Assert and What not to??斷言什么,不斷言什么
--Guidelines for Using Assertions ?斷言的幫助
3.Defensive Programming?防御式拷貝
–?Techniques for defensive programming
4.SpotBugs
?
1 Recall: Designing an ADT
?
First Defense: Make Bugs Impossible?最好的防御就是不要引入bug
Second Defense: Localize Bugs?快速定位bug,檢查前置條件是防御式編程的一種典型形式
?
2 Assertions
(1) What and Why Assertions?
斷言:在開發階段的代碼中嵌入,檢驗某些“假設”是否成立。若成立,表明程序運行正常,否則表明存在錯誤。
出現?AssertionError?,意味著內部某些假設被違反了
斷言的方法:
assert condition;
assert condition : message;
(2) What to Assert and What not to?
Internal Invariants?內部不變量
?Rep Invariants?表示不變量 (checkRep)
?Control-Flow Invariants?控制流不變量 ?switch-case
?Pre-conditions of methods?方法的前置條件
?Post-conditions of methods?方法的后置條件
?
使用異常可以避免程序直接結束
?
缺省關閉斷言,要記得打開?(-ea),斷言非常影響性能
?
(3) Guidelines for Using Assertions
?
斷言-->Correctness
錯誤?/?異常處理-->Robustness1
?
3 Defensive Programming
§?Protecting programs from invalid inputs
§?Assertions
§?Exceptions
§?Specific error handling techniques
§?Barricade
§?Debugging aids
(1) Protecting Programs From Invalid Inputs
對來自外部的數?據源要仔細檢查,例如:文件、網絡數據、用戶輸入等
(2) Barricade?設置路障
類的public方法 接收到的外部數據都應被認為是dirty的,需要處理干凈再傳遞到?private方法——隔離艙
(3) Debugging Aids
總結
以上是生活随笔為你收集整理的7.3Assertions and Defensive Programming断言与防御式编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps4手柄usb线连接后可以玩电脑游戏
- 下一篇: 触摸屏与单片机通讯c语言程序设计,触摸屏