1. 程式人生 > >論程式設計師為什麼總是發現不了自己的Bug?程式設計師:這個鍋我不背!

論程式設計師為什麼總是發現不了自己的Bug?程式設計師:這個鍋我不背!

程式設計師在普通人的印象裡是一份嚴(ku)謹(bi)的職業,也是一個被搞怪吐槽樂此不疲的職業,程式設計師們面對複雜的程式碼敲打電腦時連眉頭都不會皺一下,但是有一個詞卻是他們痛苦的根源,它就是Bug

測試人員、開發人員、管理人員對 Bug 的不同反應

當程式設計師找 Bug 的時候

程式設計師調 Bug 的感覺,就是這樣的一波未平,一波又起

開發人員在演示中如何隱藏 Bug

叫新手程式設計師幫忙改 Bug

牛 X 程式設計師和 Bug 之間的 PK

千萬不要和程式設計師直接說有 Bug

程式設計師遇到 Bug 時的 14個反應

開發應用程式是一個非常有壓力的工作。沒有人是完美的,因此在這個行業中,程式碼中出現 Bug 是相當普遍的現象。

面對 Bug,一些程式設計師會生氣,會沮喪,會心煩意亂,甚至會灰心喪氣,而另一些程式設計師會依然保持冷靜沉著。因此,如何處理修復 Bug 的過程也值得我們細細琢磨。

我想分享一些程式設計師修復他們的原始碼時所經歷的想法。我相信很多開發人員和軟體工程師經歷過這些艱辛,然後在事後一笑而過。以下你經歷過哪些?

1.“我不知道是要刪除還是要重寫它”

回顧從前老的原始碼,會有一種想要返工寫成較大塊叢集的衝動和誘惑。醜陋的邏輯語句,還有冗長的語法,導致程式碼非常難以閱讀!

但話又說回來,如果程式碼沒有壞掉的話,那就不要去修復它。這種洶湧澎拜的鬥爭是我經常要面對的,而且顯然會困擾許多軟體開發人員。

2.“在網際網路的某個地方一定已經有了解決方案。”

我面對棘手問題的第一反應是上網查。程式設計師會將他們遇到的問題通過帖子釋出到論壇上,然後這個問題最終得到解決並歸檔。

谷歌搜尋問題關鍵字的好幫手,可以指點你往正確的討論方向走。不幸的是,有的時候卻是因為手頭沒有特定問題的太多資訊而找不著北。

3.“雖然網站可以工作,但我害怕 IE 瀏覽器。”

在 Internet Explorer 中渲染網頁的歷史充滿了艱辛考驗,是我們有目共睹或親身體驗過的。

從 5.5 版本升級到 IE9、IE10,總是需要爭取到更高階瀏覽器的支援。Web 開發人員可能會害怕除錯網頁,因為在 IE6 中開啟頁面是一個渲染噩夢。值得慶幸的是,這樣的日子正在慢慢成為過去。

4.“我用 30 分鐘寫函式,花 2 小時讓它工作。”

這難道不像我們自己的程式設計故事嗎?你正興致勃勃地在構建著什麼,但是突然之間,函式輸出了一個致命的錯誤。

所以,現在你必須回過頭去刪除一些程式碼塊,以找出錯誤發生的行號。當你終於找到罪魁禍首,並解決它時,雖然有種精疲力竭的感覺,但也滿心安慰。

5.“花費大力氣才找出問題的原因是缺少了右括號。”

除錯是你必須要採取的步驟,進兩步,退一步。盯著程式碼數個小時,以為函式名或變數作用域中有哪裡搞錯了,最後才發現是遺漏了一個括號,這滋味,酸爽得不要不要的。所有這些時間都因為一個小小的語法錯誤而浪費。

6.“是不是有人動過了我的原始碼?”

這聽起來有點妄想和偏執,但有時你會不由自主地懷疑,是不是有人在你補覺的時候,寫過這個東西了。

回顧過去幾周或幾個月做的專案會讓你的心不斷地往下沉。有時候你會發現一些你已經不記得新增的東西——甚至這個專案你最近一週才剛剛瀏覽過!我為程式碼而瘋狂,但你永遠不會知道…

7.“我不知道這意味著什麼。”

你能遇到的最壞情況是,你對你正在瀏覽的原始碼完全不知道該怎麼做。可能是你自己的專案,也可能是別人的專案,但問題的根源是相同的。

現在,你必須決定是否值得花更多的時間去搜索替代方案,或仔細檢查指令碼以瞭解它是如何工作的。

8.“哦,天哪,我以前為什麼不寫點註釋呢?”

當涉及到比較基礎的前端 HTML / CSS / JS 時,我們沒有必要寫註釋。但更復雜的指令碼和程式卻需要一定形式的條理組織,當你在幾個月後,甚至若干年之後需要再回過頭來看的話。

有時你會忘記註釋函式及其引數、輸出格式,和其他的必要資料。這在一段時間之後無疑會導致混亂。而且,當 Bug 開始出現時,你必須除錯整個指令碼來尋找解決方案。因此,要是有一些有幫助的註釋就會讓你獲益良多。

9.“20 分鐘前它還可以工作的……”

在構建程式時,可能最令人沮喪的部分就是,它從能工作到不能工作——而你沒有更新程式碼的任何部分!我發誓這是真的,而且這是沒有任何意義的事情——也許是其他程式正在執行快取版本?

有很多次你更新了一丁點程式碼,卻導致了整個程式崩潰出錯,完全停止了工作。恢復到最近可工作的複製檔案,然後從那裡開始一步步前進。

10.“只是忘記了一個分號,然而整個程式卻因此而轟然倒下。”

幾乎所有我使用的程式語言都需要結束符。雖然不是所有的語言都有,但在 C/C++ 中是很常見的。

忘記新增結束符,不過是一個很顯然的錯誤!但是解析器不知道這一點,它會丟擲一個致命錯誤。

於是,你不得不額外花 20 分鐘去搜索技術故障,而原本只需要用 1 秒鐘補上那個缺少的分號即可。嗯,這就是除錯軟體的樂趣。

11.“我不知道讓別人來修復我的程式碼,得花多少錢?”

聘請另一個開發人員的點子是挺誘人的,但從財政上看顯然沒有那麼可行。而且如果你不親身體驗的話,又怎麼能從這些錯誤中學到東西呢?

當你在經歷多次失敗之後,終於理解了某個程式設計概念的時候,那感覺真是棒極了。儘管如此,我的腦海裡依然時不時地有一種 “讓別人來修復程式碼” 的衝動。

12.“我真希望我儲存了那個資料庫的備份副本……”

在編寫和除錯程式碼時,我不會想到要備份。然而,資料備份提供了允許我們回過頭去修改的踏腳石。這在實時的伺服器環境中尤為有用,因為有什麼變化會立即執行。

以防萬一,我們應該記得儲存網站檔案和資料庫的本地副本!雖然這會是一個惱人的任務,但其惱人程度遠遠比不上重建損壞的 SQL 資料庫。

13.“我敢打賭更新我的軟體將解決這個問題。”

管理程式語言依賴和外掛的團隊並不需要經常釋出版本。有時,在你從計算機傳輸檔案到實時伺服器的時候,更新 PHP / Ruby / Python / SQL 版本可以解決除錯問題。

本地更新很少能夠幫助修復原始碼中的 Bug,除非你的版本已經過時得無可救藥。所以,值得一試!

14.“算了,我還是從頭再開始吧。”

有時候,在你絞盡腦汁花費數個小時之後,可能要做的只是將你的工作檔案移動到歸檔目錄(或刪除它們),再從頭開始就可以了。但是,考慮到先前已經耗費的時間,你很難下定這個決心。

當我一籌莫展時,我往往會選擇從頭開始,因為這樣才有可能找到完成專案的正確道路。

為什麼程式設計師發現不了自己的 Bug?

作為開發就和我們成人一樣看到問題總是以自己的世界觀來理解,導致理所當然的就這樣就對了,而真正的真相就被隱藏了。

而兒童一般能夠做對的原因是,老師有引導性的提示細心的重要性並且長期踩雷。這也是測試人員和開發人員的區別之一,現在知道為啥測試不是誰都能做的工作了吧,開發也為啥找不到 Bug 了吧。

當程式設計師面對 Bug 的時候,如何機智甩鍋?

當你面對 Bug 時,切勿慌張,以下措施教你輕鬆應對 Bug 帶來的困擾。

1.打死不承認,這程式碼不是我寫的,將鍋甩出去。

2.睜眼說瞎話,在我電腦上是正常的呀,超級無辜。

賺取同情分

3.對方使用了錯誤的開啟方式。

一定是對方的開啟方式不對,重新開啟試試,我神馬都不知道

4.痛斥產品經理一頓,自己偷偷改好,氣勢不能弱,立場要堅定,迅速進入角色,完全沒有 Bug 這回事,我就是王道。

以上模式可任意切換使用,但最終都逃不了,自己背地裡偷偷,改 Bug 的宿命。

“我自己是一名從事了5年前端的老程式設計師,辭職目前在做講師,今年年初我花了一個月整理了一份最適合2018年學習的web前端乾貨,從最基礎的HTML+CSS+JS到移動端HTML5到各種框架都有整理,送給每一位前端小夥伴,這裡是小白聚集地,歡迎初學和進階中的小夥伴。"

加QQ群:867726593 (招募中)