1 2 把錯誤關在籠子裡的五道關卡

2022-07-12 04:42:09 字數 1837 閱讀 4545

本文內容是極客時間課程——**精進之路中**規範篇的學習筆記。

1.人人都會犯錯誤

第乙個比較普遍的觀點是好的程式設計師不會寫壞的**;

這個觀點一定程度上忽視了人類犯錯誤的複雜性,和影響因素的多樣性;

第二個更加普遍的觀點是同樣的錯誤不能犯第二次;

這個觀點應該是我們對自身的期望和要求;對於他人,我們可以更寬容;

對於乙個團隊,我們首先要思考如何提供一種機制,以減少此類錯誤的發生;

第三個深入人心的觀點是乙個人犯了錯誤並不可怕,怕的是承認錯誤;

一旦陷入自責的指責的漩渦,很多有建設意義的事情,我們可能沒有意識去做;或者即使意識到了,也沒法做,做不好。

2.把錯誤關在籠子裡

以蘋果公司作業系統的安全漏洞舉例:

第三行會直接跳到fail,而忽略後邊**:

if ((error = dosomething()) != 0

)

goto

fail;

goto

fail;

if ((error= domore()) != 0

)

goto

fail;

fail:

return error;

這樣的錯誤是如何被發布出來的,通過下邊的」五道關卡「:

第一道關:程式設計師

提高程式設計師的修養,是乙個永不過時的主題。從別人的失敗和自己的失敗中學習、積累、提高,是乙個人成長的必修課。

首先,他應該正確使用縮排

if ((error = dosomething()) != 0

)

goto

fail;

goto

fail;

if ((error= domore()) != 0

)

goto

fail;

fail:

return error;

其次,他應該使用大括號

if ((error = dosomething()) != 0

)

if ((error= domore()) != 0

) fail:

return error;

魔鬼藏於細節。很多時候,優秀的**源於我們對細節的熱情和執著。可能,你遇到的或者是想到的問題,不是每乙個都有完美的答案或者解決方法。但是,如果你能夠找到哪怕僅僅是乙個小問題的乙個小小的改變方法,都有可能會給你的**質量帶來巨大的提公升和改變。

第二道關:編譯器

這一次編譯器的防守並沒有做好,因為它毫無察覺地漏過了多餘的」go to fail「

對於編譯器的警告,我們一定要非常警覺。能消除所有的警告,你就應該消除掉所有的警告,就算實在沒有辦法消除掉編譯警告,那你也一定要搞清楚警告產生的原因,並確認編譯警告不會產生任何後續問題。

第三道關:回歸測試

一般地,軟體測試會盡可能地覆蓋關鍵邏輯和負面清單,以確保關鍵功能能夠正確執行,關鍵錯誤能夠有效處理。一般情況下,無論是開發人員,還是測試人員,都要寫很多測試**,來測試軟體是否達到預期的要求。

軟體測試沒有辦法覆蓋所有的應用場景。但是,我們千萬要覆蓋關鍵邏輯和負面清單。乙個沒有良好回歸測試的軟體,很難保證**變更的質量;也會使得**變更充滿不確定性,從而大幅地提高**維護的成本。

第四道關:**評審

**評審是乙個有效的在軟體研發過程中抵禦人類缺陷的制度,比如openjdk採用webrev

第五道關:**分析

靜態**分析

**測試覆蓋率

把錯誤當經驗

世界上只有兩種人不犯錯誤,一是什麼事也不做的人,二是死人。金無足赤,人無完人是世人皆知的真理。在人生歷程中面對錯誤,如何管理呢?人人都會犯錯誤 被中國人認為 智慧型的化身 的諸葛亮也犯過不少錯誤,最大的錯誤是世人皆知的錯用馬謖。馬謖驕傲自大,剛愎自用,聽不得不同意見,容不得人,但諸葛亮相信他,讓他駐...

odoo12遇到的錯誤

odoo11專案移到odoo12上時出現的錯誤。odoo.tools.convert.parseerror 無效檢視 原因 無法識別檢視 解決辦法 檢查檢視是否又單詞拼寫或者別的語法錯誤 odoo12 中需要加name屬性 需要新增name屬性,for屬性 如果標籤中使用了class fa fa 則...

優勢執行力(12) 把恐懼變成財富

恐懼的5個層次 沒有恐懼 自我實現 四等恐懼 應付 三等恐懼 掙扎 二等恐懼 逃避 一等恐懼 驚恐 千萬不要讓恐懼控制你的生活。大多數恐懼都是想象的 完全出於想象。直面你最大的恐懼。你最害怕什麼?不管是什麼,立刻動手,去面對它。一旦克服你最大的恐懼,你就會更加自信地面對未來的任何挑戰。恐懼的心理甚至...