7.3Assertions and Defensive Programming断言与防御式编程
7.3Assertions and Defensive Programming斷言與防御式編程
?
1.回憶:設(shè)計(jì)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?
斷言:在開發(fā)階段的代碼中嵌入,檢驗(yàn)?zāi)承凹僭O(shè)”是否成立。若成立,表明程序運(yùn)行正常,否則表明存在錯(cuò)誤。
出現(xiàn)?AssertionError?,意味著內(nèi)部某些假設(shè)被違反了
斷言的方法:
assert condition;
assert condition : message;
(2) What to Assert and What not to?
Internal Invariants?內(nèi)部不變量
?Rep Invariants?表示不變量 (checkRep)
?Control-Flow Invariants?控制流不變量 ?switch-case
?Pre-conditions of methods?方法的前置條件
?Post-conditions of methods?方法的后置條件
?
使用異常可以避免程序直接結(jié)束
?
缺省關(guān)閉斷言,要記得打開?(-ea),斷言非常影響性能
?
(3) Guidelines for Using Assertions
?
斷言-->Correctness
錯(cuò)誤?/?異常處理-->Robustness1
?
3 Defensive Programming
§?Protecting programs from invalid inputs
§?Assertions
§?Exceptions
§?Specific error handling techniques
§?Barricade
§?Debugging aids
(1) Protecting Programs From Invalid Inputs
對(duì)來自外部的數(shù)?據(jù)源要仔細(xì)檢查,例如:文件、網(wǎng)絡(luò)數(shù)據(jù)、用戶輸入等
(2) Barricade?設(shè)置路障
類的public方法 接收到的外部數(shù)據(jù)都應(yīng)被認(rèn)為是dirty的,需要處理干凈再傳遞到?private方法——隔離艙
(3) Debugging Aids
總結(jié)
以上是生活随笔為你收集整理的7.3Assertions and Defensive Programming断言与防御式编程的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ps4手柄usb线连接后可以玩电脑游戏
- 下一篇: 触摸屏与单片机通讯c语言程序设计,触摸屏