一、為什麼會產生bug
首先我們需要嘗試理解一下什麼bug?
關於bug的解釋
bug 是指任何電腦程式或硬體系統中的錯誤,故障或缺陷。錯誤會產生意外結果或導致系統意外執行
簡單來說:bug就是程式出了問題,產生了意外的結果,沒有按照預期的結果去執行。
產生bug的原因有很多種:
開發者水平太低
不同的編譯及執行環境
與需求方溝通不到位
馬虎大意、考慮不周
放飛自我,coding全靠自嗨
選擇了錯誤的或者執行不穩定的第三方庫
以上原因總結,主觀和客觀因素都會影響到bug的產生,正如誤差不可避免一般,我們應該對自己寫出的**進行測試、分析、"溝通".
二、如何盡量避免bug
鑑於以上bug產出的原因,我們可以通過這些一些對策來避免bug的產生,下面是一些常見原因分析和處理對策。
1.開發者水平太低
在進行系統的構建中,部分開發者可能通常因為開發經驗過少,或者語言不熟悉,會編寫錯誤的**,然後未經過**測試和審計,便進行提交和上線操作,導致了異常的引發
解決方案:
如果是語法錯誤,可通過一些ide的**檢測器,或者語法檢查來檢測**可否正常執行.
如果是php等弱型別語言,可使用靜態**掃瞄工具來發現程式中明顯的語法錯誤.
編寫足夠的測試用例,覆蓋整個模組的語句
請求你的夥伴進行codereview(**審計),來改善**的質量和發現**中的缺陷
2.不同的編譯及執行環境
因為業務的拓展和服務支援,需要部署多個不同的執行環境中,如:轉賬系統,你在測試環境中轉賬了1000元給使用者小明,小明卻在生產環境中收到了這1000元,並成功進行提現,往往因為沒有環境判斷,導致了失誤的操作!
解決方案:
1)在**中多進行注釋說明,標明哪些函式會在其他環境中操作和執行
2)加強環境邏輯判斷
3.與需求方溝通不到位
這是經常程式設計師與產品對撕的乙個很重要原因,ta想要a,而你卻做出了b,於是你們產生了很大的爭論
解決方案:
多進行溝通,需求進行反覆確認,不要上手就進行編碼,先進行分析。
通過pm系統,留存需求規劃與變更記錄,以便每一次業務更改,都得能與系統中的問題對上號.
4.馬虎大意、考慮不周
編碼時以為問題很小,修改**,不走除錯與測試流程,直接上線。
解決方案:
不要盲目過於自信,相信自己的主觀判斷,,一定走測試流程,確保改動無誤!
codereview(**審計),這是乙個最好的辦法,當然需要耗費不少的人力,但是能最大的去降低缺陷和錯誤。
三、多與**進行"溝通"
「橡皮鴨除錯法」是我在閱讀《編寫可讀**》一書中看到的乙個技巧,我在乙個人開發的時候會使用這個技巧,我認為是乙個不錯的選擇。
四、總結
我們為什麼會編寫bug,如果沒有bug?開發和測試不就失業了嗎?當然這只是一句玩笑話。
在此引用知乎上一句很有意思的話。
編碼也亦如此,因為很多主觀和客觀的因素,導致程式執行了錯誤的邏輯,產生了不如預期的結果,作為乙個合格的開發人員,我們應該盡力確保程式穩妥執行,減少失誤和異常。
另外如果你想更好的提公升你的程式設計能力,學好c語言c++程式設計!彎道超車,快人一步!筆者這裡或許可以幫到你~
免費學習書籍:
免費學習資料:
為什麼「碼農」需要自我營銷?
你有去過酒吧夜店看過駐場樂隊的演出嗎?那些樂隊的演唱水平絲毫不亞於原唱的藝術家們。你有沒有想過,為什麼這些樂隊就只能在小小的夜店裡做駐唱演出,而有些 才華並不比他們高多少的流行樂隊就可以在全世界巡迴演出,創造著乙個又乙個白金紀錄?很明顯,兩個樂隊都很有才華,但是在生活中,僅僅擁有才華是遠遠不夠的。偉...
碼農的自我修養之必備技能
作為一名程式設計師,打字能力是基礎而又不可或缺的技能,十指打字 準確率 速度,二指禪是要不得的,這勢必會影響coding的速度。規範的打字手法加上練習,可以讓你的打字速度快的飛起,在這裡你可以測試自己的打字速度並循序漸進的練習,展示下我的練習進度。還需要繼續練習,當然這需要個過程,平時coding時...
碼農的自我修養之必備技能 學習筆記
命令面板是vscode快捷鍵的主要互動介面,可以使用f1或者cmd shift p win ctrl shift p 開啟。在命令面板中你可以輸入命令進行搜尋 中英文都可以 然後執行。命名面板中可以執行各種命令,包括編輯器自帶的功能和外掛程式提供的功能。所以一定要記住它的快捷鍵cmd shift p...