程序員在普通人的印象里是一份嚴(ku)謹(bi)的職業(yè),也是一個被搞怪吐槽樂此不疲的職業(yè),程序員們面對復(fù)雜的代碼敲打電腦時連眉頭都不會皺一下,但是有一個詞卻是他們痛苦的根源,它就是Bug。
當程序員找 Bug 的時候
程序員調(diào) Bug 的感覺,就是這樣的一波未平,一波又起
開發(fā)人員在演示中如何隱藏 Bug
叫新手程序員幫忙改 Bug
牛 X 程序員和 Bug 之間的 PK
千萬不要和程序員直接說有 Bug
面對 Bug,一些程序員會生氣,會沮喪,會心煩意亂,甚至會灰心喪氣,而另一些程序員會依然保持冷靜沉著。因此,如何處理修復(fù) Bug 的過程也值得我們細細琢磨。
我想分享一些程序員修復(fù)他們的源代碼時所經(jīng)歷的想法。我相信很多開發(fā)人員和軟件工程師經(jīng)歷過這些艱辛,然后在事后一笑而過。以下你經(jīng)歷過哪些?
1.“我不知道是要刪除還是要重寫它”
回顧從前老的源代碼,會有一種想要返工寫成較大塊集群的沖動和誘惑。丑陋的邏輯語句,還有冗長的語法,導致代碼非常難以閱讀!
但話又說回來,如果代碼沒有壞掉的話,那就不要去修復(fù)它。這種洶涌澎拜的斗爭是我經(jīng)常要面對的,而且顯然會困擾許多軟件開發(fā)人員。
2.“為什么這個腳本需要這么多庫?”
尤其是一些比較大眾化的語言,如 Java 和 Objective-C,庫的數(shù)量可能變得異常兇猛。當構(gòu)建一個需要大量基礎(chǔ)的框架時,所需的庫的數(shù)量就變得顯而易見得多。
3.“有沒有這個功能的插件?”
為什么要重新發(fā)明輪子?插件是擴大任何程序或網(wǎng)站用戶界面的偉大資源。此外,它們還為開發(fā)人員提供了一些自定義和獨特的選項。萬一真的沒有可用插件的話,為什么不自己構(gòu)建一個呢?
4.“雖然網(wǎng)站可以工作,但我害怕 IE 瀏覽器?!?/strong>
從 5.5 版本升級到 IE9、IE10,總是需要爭取到更高級瀏覽器的支持。Web 開發(fā)人員可能會害怕調(diào)試網(wǎng)頁,因為在 IE6 中打開頁面是一個渲染噩夢。值得慶幸的是,這樣的日子正在慢慢成為過去。
5.“對于邏輯表達式而言,這似乎并不怎么合乎邏輯?!?/strong>
對于 if / else 循環(huán),for 循環(huán),while 循環(huán),do 循環(huán)等等,都有邏輯表達式。當瀏覽示例代碼時,我試圖指出我的邏輯是如何工作的。
6.“我用 30 分鐘寫函數(shù),花 2 小時讓它工作。”
這難道不像我們自己的編程故事嗎?你正興致勃勃地在構(gòu)建著什么,但是突然之間,函數(shù)輸出了一個致命的錯誤。
所以,現(xiàn)在你必須回過頭去刪除一些代碼塊,以找出錯誤發(fā)生的行號。當你終于找到罪魁禍首,并解決它時,雖然有種精疲力竭的感覺,但也滿心安慰。
7.“在閱讀多篇博客文章之后,我意識到,我之前全都是錯的?!?/strong>
我常常會一開始就根據(jù)自己的編程思想,一頭扎進去研究,但是這可能會導致麻煩,如果事情不像原先設(shè)想地那樣順利的話。
最后我發(fā)現(xiàn)我的整個方法實際上是錯誤的,而且從頭來過更容易!如果我開始的時候能先做一番研究的話,從長遠來說,反而節(jié)省時間。
8.“花費大力氣才找出問題的原因是缺少了右括號?!?/strong>
調(diào)試是你必須要采取的步驟,進兩步,退一步。盯著代碼數(shù)個小時,以為函數(shù)名或變量作用域中有哪里搞錯了,最后才發(fā)現(xiàn)是遺漏了一個括號,這滋味,酸爽得不要不要的。所有這些時間都因為一個小小的語法錯誤而浪費。
9.“喝杯咖啡,休息一下!”
有時候,你只是需要站起來,遠離顯示器。將鼠標懸停在鍵盤數(shù)個小時,反而有助于打破常規(guī)。大多數(shù)健康指導都會建議我們每隔 30-60 分鐘休息一會。
但是這一切都取決于你的需要,如果你覺得在程序中間休息更令人懊惱的話,那就不要中斷。
10.“我應(yīng)該把這個項目束之高閣,以后再來處理它?!?/strong>
休息的另一個選擇是離開你的項目,而不僅僅是遠離你的電腦。如果還有其他工作需要做,那么不妨去做其他工作。
相對于已經(jīng)花費了 5 個小時來解決問題依然不得入門而言的話,這將能更好地分配時間和資源。
為什么程序員發(fā)現(xiàn)不了自己的 Bug?
作為開發(fā)就和我們成人一樣看到問題總是以自己的世界觀來理解,導致理所當然的就這樣就對了,而真正的真相就被隱藏了。
當程序員面對 Bug 的時候,如何機智甩鍋?
當你面對 Bug 時,切勿慌張,以下措施教你輕松應(yīng)對 Bug 帶來的困擾。
打死不承認,這代碼不是我寫的,將鍋甩出去。
2.睜眼說瞎話,在我電腦上是正常的呀,超級無辜。
賺取同情分
3.對方使用了錯誤的打開方式。
一定是對方的打開方式不對,重新打開試試,我神馬都不知道
4.痛斥產(chǎn)品經(jīng)理一頓,自己偷偷改好,氣勢不能弱,立場要堅定,迅速進入角色,完全沒有 Bug 這回事,我就是王道。
以上模式可任意切換使用,但最終都逃不了,自己背地里偷偷,改 Bug 的宿命。
