導讀:bug和可恢復錯誤是兩個不同的概念。
程式員花在bug上的大量時間,實際上都被浪費了。面對bug,我們應該採用的方法叫做“快速失敗”(Fail-fast)。
有時候你可能會遇到“面向鐵路的程式設計”:一旦你踏上失敗的軌道,你幾乎永遠不會回頭。
5月18日,2018全球軟體與運維技術峰會(WOT)在北京舉行,大資料(ID:hzdashuju)的小編應主辦方邀請到現場圍觀。本次WOT的一大亮點就是請到了Bruce Eckel這位神級人物,他在現場發表了題為”Failing at Failing: How and Why We’ve Been Moving Away From Exception Handling”(我們為什麼、又該怎樣告別異常處理)的演講,並與粉絲互動,隨後又進行簽名售書活動。
▲大神的簽名真是萌萌噠
Bruce Eckel是MindView公司的總裁,該公司向客戶提供軟體諮詢和培訓。他是C++標準委員會擁有表決權的成員之一,擁有應用物理學學士和計算機工程碩士學位。從1984年至今,他已經發表了超過150篇計算機技術文章,出版了6本書。他的《C++程式設計思想》一本書在1995年被評為“最佳軟體開發圖書”,《Java程式設計思想》被評為1999年Java World“最受讀者歡迎圖書”,並且贏得了編輯首選圖書獎。這兩本書的英文影印版及中文版均已由機械工業出版社引進出版。
▲Bruce Eckel在WOT
在演講中,Bruce Eckel提出,當前程式設計面臨的三大挑戰是程式語言的設計和影響、併發性以及錯誤的處理和報告。
程式語言設計以及它所造成的影響是第一個也是最重要的一個挑戰,它關係到程式員的效率和生產力;關於併發性,他仍在不斷學習、加強這方面的知識;而這次演講的重點就放在錯誤的處理這方面。
而重點中的重點是,bug和可恢復錯誤是兩個不同的概念。
Bruce Eckel表示,很多時候我們是無法從錯誤當中進行恢復的,大部分的錯誤都是不可恢復的,他們都是bug。程式員花在bug上的大量時間,實際上都被浪費了。所以我們要一定要區分開bug和可恢復錯誤,如果出現了bug我們是沒有辦法處理的,不要在bug上浪費時間。
bug使得我們的程式碼可讀性更低,使得整個程式執行速度更慢,消耗掉了大量的資源。面對bug,我們應該採用的方法叫做“快速失敗”(Fail-fast),我們不會使用任何的恢復機制。所有的這些問題都是不可恢復的,比如說錯誤的函式,或者是記憶體不夠,我們就需要去放棄他們,而不是說寫程式碼去繞過他們。
可恢復的錯誤呢?一般來說都是來自於程式外部的一些東西,比如I/O的問題、資料的問題。可恢復錯誤一般比例很小,其數量是要遠低於10%的。
程式語言是否需要異常處理?它可能有用也可能沒用。不同語言的處理方式和效果也各自不同。在這方面,Java其實是有漏洞的。
最後,Bruce Eckel談到了一些未來的趨勢,並對本次演講進行了簡單的總結,再次強調了放棄的哲學。有時候你可能會遇到“面向鐵路的程式設計”:一旦你踏上失敗的軌道,你幾乎永遠不會回頭。
本文內容整理自Bruce Eckel在WOT的演講稿及PPT。
關註“大資料”(ID:hzdashuju)併在後臺回覆bug,可下載完整版PPT
關註“大資料”(ID:hzdashuju)併在後臺回覆20,可參與尋找”黑皮書”活動,領取噹噹購書券
點選閱讀原文,可檢視&購買Bruce Eckel著作《Java程式設計思想》
推薦閱讀
Q: 想想你有多少時間浪費在bug上了?
歡迎留言與大家分享
覺得不錯,請把這篇文章分享給你的朋友
轉載 / 投稿請聯絡:baiyu@hzbook.com
更多精彩,請在後臺點選“歷史文章”檢視
點選閱讀原文,瞭解更多