日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结...

發布時間:2024/7/5 编程问答 61 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

健壯性與正確性

健壯性與正確性是不同的——一個傾向于使程序盡可能保持運行,即使遇到錯誤,一個傾向于使程序盡可能正確,不在意保持運行

異常

異常分為兩種——checked exception與unchecked exception

二者的區別在于:

  • checked exception需要顯式的處理,說白了就是編程者必須要么用catch抓住它,然后在try中想辦法處理掉,要么顯式的將這個異常扔到調用的上一級方法,也就是甩鍋。總而言之,你永遠不能無視checked exception
  • unchecked exception則完全相反,你不捕捉不到它們。因為這些異常一旦產生,就像接到了燙手山芋一樣,容不得我們再把他保留著或者throw到上一級方法,這些異常會在其產生的地方直接中止程序,并在控制臺打印錯誤信息。

?

?

?異常使用的注意事項

  • catch 不能獨立于 try 存在。
  • 在 try/catch 后面添加 finally 塊并非強制性要求的。
  • try 代碼后不能既沒 catch 塊也沒 finally 塊。
  • try, catch, finally 塊之間不能添加任何代碼。

關于異常的LSP原則

  • 如果子類型中override了父類型中的函數,那么子類型中方法拋出的異常不能比父類型拋出的異常類型更廣泛
  • 子類型方法可以拋出更具體的異常,也可以不拋出任何異常
  • 如果父類型的方法未拋出異常,那么子類型的方法也不能拋出異常。

那么結合我之前對繼承關系的理解,——前置條件不能加強,后置條件不能減弱

如果父類拋出了一個異常,子類拋出一個更具體的異常——?

這我能理解。因為異常也可以看做方法的后置條件,后置條件不能減弱,固異常變得更加具體是完全符合的

如果父類拋出了一個異常,子類可以不拋出異常————???

那么這個就只能夠理解為”不拋出任何異常是比拋出某一種異常更加具體的條件。”, 我們可以就這樣理解,不跑出異常相當于把異常拋出的條件無限加強。

?

?防御式編程

防御式編程(Avoiding debugging),顧名思義,就是為了減少bug的出現而采用的一系列措施。

第一道防線:不讓bug產生

聽起來很厲害哈哈哈哈,說得倒輕巧。

其實這第一道防線的意思就是減少bug的一些編程技巧,比如說:

  • 靜態檢查
  • 動態檢查
  • 使用immutable的對象
  • 使用immutable的引用

第二道防線:縮小bug的影響范圍

也就是老生常談的fail fast

使用Assertion是一個重要技巧,但是哪些東西需要使用asserrtion呢,這也有一些套路的

  • 需要assert的
    • 方法參數的條件(前置條件)
    • 方法的返回值的條件(后置條件)
  •   不需要assert的
    • java中的算式等從語法角度不會犯錯的(也就是不要試圖用assert尋找虛擬機的錯誤)
    • 外部的錯誤(比如說用戶的輸入,文件的存在性等,這個我們管不著)

其它方法

  • Incremental Development
  • Modularity
  • Encapsulation

Debugging

?。。。。。。(這里真的沒有什么內容啊)

Testing

測試用例很重要,但是也很繁瑣。本學期軟件構造課的實驗中,對我來說的最大的噩夢就是為自己的代碼寫test用例了。

如何選擇測試用例

簡而言之,就是通過對方法的輸入空間和解空間,根據方法的特性來設定測試用例。

一個簡單的例子:

如果要測試BigInteger.multiply(BigInteger b)

?

如何劃分?

  • 正值,負值與0
  • 很小的值,很大的值
  • 特殊值(比如0,-1,1)

然后只要按照這些劃分來寫測試用例即可。

這是一個很淺顯的例子,事實上ppt與mit的reading中都明確給出了關于等價類劃分的一套證明,但我認為如果要理解測試用例的書寫,只需要理解

  • 錯誤經常發生在邊界條件處
  • 對每一種情況選擇一個代表元素

即可。

Documenting test strategy

選擇測試用例的劃分是編程時經常用到的技巧,但是對于考試題來說,還必須會將測試用例書寫下來才行。不要到考場上才慌慌張張想著怎么排版按什么格式

?

?白盒測試與黑盒測試

黑盒測試就是在不知道方法的內部實現的情況下,只根據前置條件和后置條件對方法進行測試,這是最常用的。

而白盒測試則是對方法的內部實現進行測試?例子?

?

轉載于:https://www.cnblogs.com/giere/p/11074043.html

總結

以上是生活随笔為你收集整理的软件构造-犯错的艺术——健壮性与正确性,异常,防御式编程,debugging与test的思考与总结...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美成人三级在线 | 少妇一夜三次一区二区 | 九九综合 | 一区二区三区欧美在线 | 精品欧美激情精品一区 | 国产成人精品免费在线观看 | 中文字幕第六页 | 天天综合国产 | 超碰人人人 | 色av一区二区 | 97超碰在线资源 | 五月婷婷丁香在线 | 色婷婷综合久久久中文字幕 | 色婷婷一区二区三区四区 | 国产精品宾馆在线精品酒店 | 久久精品一区二 | 卡通动漫精品一区二区三区 | 大胸美女啪啪 | 91精品国产自产91精品 | 国产91清纯白嫩初高中在线观看 | 欧美a级网站 | 国产成人精品视频 | 日韩高清片 | 欧美三日本三级少妇三99 | 亚洲精品一区二三区不卡 | 亚欧美| asian性开放少妇pics | 国产情侣在线播放 | 国产精品一级片在线观看 | 嘿咻视频在线观看 | 91在线精品播放 | 亚洲色图28p | 中文字幕乱码亚洲无线三区 | 国产xxx69麻豆国语对白 | 亚洲av无码国产精品久久久久 | 免费成人美女在线观看 | 久久伊人99 | 欧美视频一二三 | ass日本寡妇pics | 亚洲13p| av男人资源 | 激情五月婷婷综合网 | 亚洲成年人在线观看 | 亚洲一区二区三区在线免费观看 | 永久中文字幕 | 杨幂毛片午夜性生毛片 | 波多野结衣中文一区 | 污片在线免费观看 | 久久精品一 | 男人的天堂网在线 | 日批视频 | 亚洲不卡在线观看 | 干成人网 | 精品一区二区三区四区 | 不卡一区二区三区四区 | 天天综合永久 | 日本韩国欧美 | 国产精品无圣光 | 91欧美激情一区二区三区成人 | 亚洲欧美日韩在线 | 亚洲作爱网 | 日韩av在线天堂 | 日本xxxx18| 亚洲AV无码成人国产精品色 | 亚洲精品久久久狠狠狠爱 | 国产91视频在线观看 | 午夜精品一区二区在线观看 | 成人久久电影 | 免费在线国产 | 久久久久一区二区 | 久久99精品久久只有精品 | 刘亦菲毛片一区二区三区 | 91性高潮久久久久久久 | 婷婷国产一区二区三区 | 免费在线观看成年人视频 | 91性高潮久久久久久久 | 少妇搡bbbb搡bbb搡打电话 | 国产精品亚洲二区在线观看 | 久久精品一二区 | 国产色一区二区 | 免费黄色美女网站 | 久久久久久久久久免费 | 国产精品麻豆一区二区三区 | 精品一区二区三区精华液 | 久久久久久一 | 日本精品一区二区三区四区 | 一级大毛片 | 成人拍拍拍 | 国产精品人人爽人人爽 | 999一区二区三区 | 新红楼梦2005锦江版高清在线观看 | 中文字幕丝袜 | 亚洲欧美精品在线 | 亚洲情人网 | 爱啪啪av | 阿的白色内裤hd中文 | 丰满孕妇性春猛交xx大陆 | 日精品| 国产睡熟迷奷系列精品视频 |