程序員遇到 Bug 時的 30 個反應(yīng)周崭,你是哪一種?


開發(fā)應(yīng)用程序是一個非常有壓力的工作喳张。沒有人是完美的续镇,因此在這個行業(yè)中,代碼中出現(xiàn)bug是相當普遍的現(xiàn)象销部。面對bug摸航,一些程序員會生氣制跟,會沮喪,會心煩意亂酱虎,甚至會灰心喪氣雨膨,而另一些程序員會依然保持冷靜沉著。因此读串,如何處理修復bug的過程也值得我們細細琢磨聊记。

我想分享一些程序員修復他們的源代碼時所經(jīng)歷的想法。這是事情變得緊張時所觸發(fā)的輕松幽默爹土。通常說來甥雕,應(yīng)用程序終將可以工作,然后你也可以進入到下一個偉大的任務(wù)。

我相信很多web開發(fā)人員和軟件工程師經(jīng)歷過這些艱辛挟阻,然后在事后一笑而過琼娘。

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

回顧從前老的源代碼,會有一種想要返工寫成較大塊集群的沖動和誘惑附鸽。丑陋的邏輯語句脱拼,還有冗長的語法,導致代碼非常難以閱讀坷备!但話又說回來熄浓,如果代碼沒有壞掉的話,那就不要去修復它省撑。這種洶涌澎拜的斗爭是我經(jīng)常要面對的赌蔑,而且顯然會困擾許多軟件開發(fā)人員。

2.“對于起始框架我應(yīng)該查看Github”

我想大多數(shù)開發(fā)人員都知道Github竟秫,上面每天都有數(shù)量驚人的開源項目發(fā)布娃惯。任何語言的程序員都可以通過互聯(lián)網(wǎng)借鑒現(xiàn)有項目,加入維基討論肥败,或者創(chuàng)建自己的代碼倉庫趾浅。它是各種項目所需插件和模板的超棒資源。

3.“為什么這個腳本需要這么多庫馒稍?”

尤其是一些比較大眾化的語言皿哨,如Java和Objective-C,庫的數(shù)量可能變得異常兇猛纽谒。當構(gòu)建一個需要大量基礎(chǔ)的框架時证膨,所需的庫的數(shù)量就變得顯而易見得多。即使是一些適用于JavaScript的插件佛舱,也會額外需要無數(shù)的文件椎例。有時挨决,這會讓人覺得煩雜惱人——但至少是有用的!

4.“在互聯(lián)網(wǎng)的某個地方一定已經(jīng)有了解決方案订歪〔逼恚”

我面對棘手問題的第一反應(yīng)是上網(wǎng)查。程序員會將他們遇到的問題通過帖子發(fā)布到論壇上刷晋,然后這個問題最終得到解決并歸檔盖高。谷歌搜索問題關(guān)鍵字的好幫手,可以指點你往正確的討論方向走眼虱。不幸的是喻奥,有的時候卻是因為手頭沒有特定問題的太多信息而找不著北。

5.“有沒有這個功能的插件捏悬?”

為什么要重新發(fā)明輪子撞蚕?插件是擴大任何程序或網(wǎng)站用戶界面的偉大資源。此外过牙,它們還為開發(fā)人員提供了一些自定義和獨特的選項甥厦。萬一真的沒有可用插件的話,沒什么不自己構(gòu)建一個呢寇钉?

6.“雖然網(wǎng)站可以工作刀疙,但我害怕IE瀏覽器∩ǔ”

在Internet Explorer中渲染網(wǎng)頁的歷史充滿的艱辛考驗谦秧,是我們有目共睹或親身體驗過的。從5.5版本升級到IE9-IE10撵溃,總是需要爭取到更高級瀏覽器的支持疚鲤。web開發(fā)人員可能會害怕調(diào)試網(wǎng)頁,因為在IE6中打開頁面是一個渲染噩夢征懈。值得慶幸的是石咬,這樣的日子正在慢慢成為過去。

7.“對于邏輯表達式而言卖哎,這似乎并不怎么合乎邏輯甫窟∪唬”

對于if / else循環(huán)庸论,for循環(huán)嫉戚,while循環(huán),do循環(huán)等等维贺,都有邏輯表達式它掂。當瀏覽示例代碼時,我試圖指出我的邏輯是如何工作的。NOT運算符和比較標記的數(shù)量又是如此之多虐秋。我經(jīng)抽偶耄回過頭去更新我自己的邏輯以便于更好地適合未來的做法。

8.“我用30分鐘寫函數(shù)客给,花2小時讓它工作用押。”

這難道不像我們自己的編程故事嗎靶剑?你正興致勃勃地在構(gòu)建著什么蜻拨,但是突然之間,函數(shù)輸出了一個致命的錯誤桩引。所以缎讼,現(xiàn)在你必須回過頭去刪除一些代碼塊,以找出錯誤發(fā)生的行號坑匠。當你終于找到罪魁禍首血崭,并解決它時,雖然有種精疲力竭的感覺笛辟,但也滿心安慰功氨。

9.“在閱讀多篇博客文章之后,我意識到手幢,我之前全都是錯的〕老辏”

我常常會一開始就根據(jù)自己的編程思想围来,一頭扎進去研究,但是這可能會導致麻煩匈睁,如果事情不像原先設(shè)想地那樣順利的話监透。已經(jīng)有很多次在我啟動一個項目之后,陷入了困境航唆,然后只好尋求博客和其他論文的支持胀蛮。然后我發(fā)現(xiàn)我的整個方法實際上是錯誤的,而且從頭來過更容易糯钙!如果我開始的時候能先做一番研究的話粪狼,從長遠來說,反而節(jié)省時間任岸。

10.“Stack Overflow上和善的人或許愿意幫助我再榄。”

我已經(jīng)數(shù)不清有多少次我通過Stack Overflow解決了難題享潜。社區(qū)里都是和善和聰明的人困鸥,他們非常愿意提供幫助,如果你邁出第一步的話剑按。在所有的在線論壇中疾就,Stack Overflow絕對是對軟件編程以及前端/后端web開發(fā)支持最廣泛的網(wǎng)絡(luò)澜术。

11.“花費大力氣才找出問題的原因是缺少了右括號♀”

調(diào)試是你必須要采取的步驟鸟废。進兩步,退一步漆诽。盯著代碼數(shù)個小時侮攀,以為函數(shù)名或變量作用域中有哪里搞錯了,最后才發(fā)現(xiàn)是遺漏了一個括號厢拭,這滋味兰英,酸爽得不要不要的。所有這些時間都因為一個小小的語法錯誤而浪費供鸠。

12.“喝杯咖啡畦贸,休息一下!”

有時候楞捂,你只是需要站起來薄坏,遠離顯示器。將鼠標懸停在鍵盤數(shù)個小時寨闹,反而有助于打破常規(guī)胶坠。大多數(shù)健康指導都會建議我們每隔30-60分鐘休息一會。但是這一切都取決于你的需要繁堡,如果你覺得在程序中間休息更令人懊惱的話沈善,那就不要中斷。

13.“我應(yīng)該把這個項目束之高閣椭蹄,以后再來處理它闻牡。”

休息的另一個選擇是離開你的項目绳矩,而不僅僅是遠離你的電腦罩润。如果還有其他工作需要做,那么不妨去做其他工作翼馆。相對于已經(jīng)花費了5個小時來解決問題依然不得入門而言的話割以,這將能更好地分配時間和資源。

14.“我很懷疑古典音樂能否激發(fā)我的編程能力写妥∪颍”

有一種說法是,古典音樂可以在生命的早期階段促進植物生長珍特。我個人非常喜歡在寫復雜筆記時聆聽古典音樂祝峻。爵士樂、鋼琴、大樂團莱找,優(yōu)雅的音樂在全世界的人類文化中都有一席之地酬姆。那么,在編程的同時傾聽智慧的音樂真的能夠讓你更智慧地調(diào)試嗎奥溺?可能不會辞色,不過希望它不會讓你變得更笨拙。

15.“喝點酒吧浮定,也許現(xiàn)在是檢驗鮑爾默峰值理論的好時機相满。”

很多讀者都聽說過鮑爾默的峰值理論桦卒,根據(jù)一個特殊XKCD漫畫而得出立美。簡單地說,這個理論認為程序員的編碼能力在喝了一定量的酒之后方灾,會達到一個峰值建蹄。作者名叫史蒂夫·鮑爾默,他的行為古怪裕偿,就像是一個醉漢洞慎,這有一定的諷刺意味,因為鮑爾默在微軟從來就不是一名真正的程序員嘿棘。也許我們需要等待別人來實踐證明這個理論吧劲腿。

16.“是不是有人動過了我的源代碼?”

這聽起來有點妄想和偏執(zhí)鸟妙,但有時你會不由自主地懷疑谆棱,是不是有人在你補覺的時候,寫過這個東西了圆仔。回顧過去幾周或幾個月做的項目會讓你的心不斷地往下沉蔫劣。有時候你會發(fā)現(xiàn)一些你已經(jīng)不記得添加的東西——甚至這個項目你最近一周才剛剛瀏覽過坪郭!我為代碼而瘋狂,但你永遠不會知道…

17.“我不知道這意味著什么脉幢⊥嵛郑”

你能遇到的最壞情況是,你對你正在瀏覽的源代碼完全不知道該怎么做嫌松』κ铮可能是你自己的項目,也可能是別人的項目萎羔,但問題的根源是相同的∫鹤撸現(xiàn)在,你必須決定是否值得花更多的時間去搜索替代方案,或仔細檢查腳本以了解它是如何工作的缘眶。

18.“我需要Google錯誤信息嘱根。”

在PHP中工作了多年之后巷懈,我不得不說该抒,Google是我調(diào)試問題時的最好的朋友。使用Objective-C顶燕、C ++凑保、Java、Python和其他主要語言涌攻,也是如此欧引。錯誤信息非常有幫助,但是除非你記得不同的代碼意味著什么癣漆,否則它讀起來更像是翻譯過的計算機語言维咸。值得慶幸的是,有很多在線支持可以幫助我們確定這些錯誤信息的真正含義惠爽。

19.“我應(yīng)該停下來癌蓖,收工……但我真的很想解決它!”

我們都有過極度灰心喪氣婚肆,想要放棄的感受租副,但總感覺半途而廢不是正確的選擇。于是较性,你繼續(xù)埋首鉆研用僧,并嘗試新的解決方案來調(diào)試。但是赞咙,如果這還是意味著另一個小時的浪費呢责循?對于這樣的情況我并不陌生,令人非常令人沮喪攀操。

20.“哦院仿,天哪,我以前為什么不寫點注釋呢速和?”

當涉及到比較基礎(chǔ)的前端HTML / CSS / JS時歹垫,我們沒有必要寫注釋。但更復雜的腳本和程序卻需要一定形式的條理組織颠放,當你在幾個月后排惨,甚至若干年之后需要再回過頭來看的話。有時你會忘記注釋函數(shù)及其參數(shù)碰凶、輸出格式暮芭,和其他的必要數(shù)據(jù)鹿驼。這在一段時間之后無疑會導致混亂,而且谴麦,當bug開始出現(xiàn)時蠢沿,你必須調(diào)試整個腳本來尋找解決方案。因此匾效,要是有一些有幫助的注釋就會讓你獲益良多舷蟀。

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

在構(gòu)建程序時,可能最令人沮喪的部分就是面哼,它從能工作到不能工作——而你沒有更新代碼的任何部分野宜!我發(fā)誓這是真的。而且這是沒有任何意義的事情——也許是其他程序正在運行緩存版本魔策?有很多次你更新了一丁點代碼匈子,卻導致了整個程序崩潰出錯,完全停止了工作闯袒』⒍兀恢復到最近可工作的復制文件,然后從那里開始一步步前進政敢。

22.“只是忘記了一個分號其徙,然而整個程序卻因此而轟然倒下∨缁В”

幾乎所有我使用的編程語言都需要結(jié)束符唾那。雖然不是所有的語言都有,但在C/C ++中是很常見的褪尝。忘記添加結(jié)束符闹获,不過是一個很顯然的錯誤!但是解析器不知道這一點河哑,它會拋出一個致命錯誤避诽。于是,你不得不額外花20分鐘去搜索技術(shù)故障璃谨,而原本只需要用1秒鐘補上那個缺少的分號即可茎用。嗯,這就是調(diào)試軟件的樂趣睬罗。

23.“我不知道讓別人來修復我的代碼,得花多少錢旭斥?”

聘請另一個開發(fā)人員的點子是挺誘人的容达,但從財政上看顯然沒有那么可行。而且如果你不親身體驗的話垂券,又怎么能從這些錯誤中學到東西呢花盐?當你在經(jīng)歷多次失敗之后羡滑,終于理解了某個編程概念的時候,那感覺真是棒極了算芯。盡管如此柒昏,我的腦海里依然時不時地有一種“讓別人來修復代碼”的沖頭。

24.“快速瀏覽Hackers News可以提高我的工作效率熙揍≈暗唬”

很多程序員最喜歡閱讀的,有關(guān)于軟件和創(chuàng)業(yè)公司等社會新聞的選擇是Hackers News頭版届囚。它有很多關(guān)于自由職業(yè)有梆、時間管理、軟件開發(fā)意系、以及創(chuàng)業(yè)發(fā)布和融資的大量信息泥耀。雖然HN可以通過自我教育讓你感覺自己變得更有效率了,但同時它也會浪費你的時間蛔添。每隔幾小時去快速瀏覽下Hackers News也不是那么糟糕痰催。

25.“這個API怎么沒有文檔?迎瞧!”

在使用帶有壞文檔的插件或框架時夸溶,最令人沮喪的是,你必須靠自己去深入鉆研源代碼夹攒。我喜歡開發(fā)人員花時間去專門設(shè)計可用文檔頁面的項目蜘醋。所有的參數(shù)和選項都解釋得清清楚楚,甚至可能會被用在一些示例代碼片段中咏尝。但可悲的是压语,事實并非總是如此。所以最簡單的方法是遠離不良文檔编检,不自找麻煩胎食。

26.“我真希望我保存了那個數(shù)據(jù)庫的備份副本……”

在編寫和調(diào)試代碼時,我不會想到要備份允懂。然而厕怜,數(shù)據(jù)備份提供了允許我們回過頭去修改的踏腳石。這在實時的服務(wù)器環(huán)境中尤為有用蕾总,因為有什么變化會立即執(zhí)行粥航。以防萬一,我們應(yīng)該記得保存網(wǎng)站文件和數(shù)據(jù)庫的本地副本生百!雖然這會是一個惱人的任務(wù)递雀,但其惱人程度遠遠比不上重建損壞的SQL數(shù)據(jù)庫。

27.“讓它正常工作的最快解決辦法是什么蚀浆?”

在花費數(shù)個小時苦苦思考自定義的解決方案之后缀程,很明顯你需要一種新的方法搜吧。在設(shè)計漂亮的界面之前,程序員率先想到的是讓功能正常工作杨凑。確定最快滤奈、最準確的解決方案,并實施這個解決方案讓其工作才是100%利用了時間撩满。然后蜒程,再轉(zhuǎn)移到漂亮美觀方面。

28.“我敢打賭更新我的軟件將解決這個問題鹦牛「愀猓”

管理編程語言依賴和插件的團隊并不需要經(jīng)常發(fā)布版本。有時曼追,在你從計算機傳輸文件到實時服務(wù)器的時候窍仰,更新PHP /Ruby/ Python / SQL版本可以解決調(diào)試問題。本地更新很少能夠幫助修復源代碼中的bug礼殊,除非你的版本已經(jīng)過時得無可救藥驹吮。所以,值得一試晶伦!

29.“我應(yīng)該更有條理并且去學習Git ……下周就去研究它碟狞。”

開源版本控制包Git在程序員中非常受歡迎婚陪。相對于其他的競爭對手族沃,它提供了更容易的學習曲線,并且被許多在線代碼倉庫泌参,如Github上和Bitbucket使用脆淹。開發(fā)人員很容易拖延去學習Git的行動,因為它對于初學者而言顯然是有難度的沽一。但是一旦你知道了基本命令盖溺,那么Git就是小菜一碟。而且它還能使調(diào)試版本控制更加清晰铣缠。

30.“算了烘嘱,我還是從頭再開始吧』韧埽”

有時候蝇庭,在你絞盡腦汁花費數(shù)個小時之后,可能要做的只是將你的工作文件移動到歸檔目錄(或刪除它們)捡硅,再從頭開始就可以了遗契。但是,考慮到先前已經(jīng)耗費的時間病曾,你很難下定這個決心牍蜂。但是,當我一籌莫展時泰涂,我往往會選擇從頭開始鲫竞,因為這樣才有可能找到完成項目的正確道路。





文章轉(zhuǎn)載自:開源中國社區(qū)

原文鏈接:https://www.oschina.net/news/78082/bug-30

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末逼蒙,一起剝皮案震驚了整個濱河市从绘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌是牢,老刑警劉巖僵井,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異驳棱,居然都是意外死亡批什,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門社搅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來驻债,“玉大人,你說我怎么就攤上這事形葬『夏牛” “怎么了?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵笙以,是天一觀的道長淌实。 經(jīng)常有香客問我,道長猖腕,這世上最難降的妖魔是什么拆祈? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮谈息,結(jié)果婚禮上缘屹,老公的妹妹穿的比我還像新娘。我一直安慰自己侠仇,他們只是感情好轻姿,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著逻炊,像睡著了一般互亮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上余素,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天豹休,我揣著相機與錄音,去河邊找鬼桨吊。 笑死威根,一個胖子當著我的面吹牛凤巨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播洛搀,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼敢茁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了留美?” 一聲冷哼從身側(cè)響起彰檬,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谎砾,沒想到半個月后逢倍,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡景图,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年较雕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片症歇。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡郎笆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出忘晤,到底是詐尸還是另有隱情宛蚓,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布设塔,位于F島的核電站凄吏,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏闰蛔。R本人自食惡果不足惜痕钢,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望序六。 院中可真熱鬧任连,春花似錦、人聲如沸例诀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽繁涂。三九已至拱她,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間扔罪,已是汗流浹背秉沼。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人唬复。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓矗积,卻偏偏與公主長得像,于是被迫代替她去往敵國和親敞咧。 傳聞我的和親對象是個殘疾皇子漠魏,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,307評論 25 707
  • 開發(fā)應(yīng)用程序是一個非常有壓力的工作。沒有人是完美的妄均,因此在這個行業(yè)中,代碼中出現(xiàn)bug是相當普遍的現(xiàn)象哪自。面對bug...
    Bugtags閱讀 224評論 0 1
  • 開發(fā)應(yīng)用程序是一個非常有壓力的工作丰包。沒有人是完美的,因此在這個行業(yè)中壤巷,代碼中出現(xiàn)bug是相當普遍的現(xiàn)象邑彪。面對bug...
    極客學院Wiki閱讀 537評論 0 0
  • 最近因求職誤入不良組織的李文星鬧得沸沸揚揚 只是這不會是最后一個例子 之后可能還會有很多 但我想說的是... 不怎...
    隨心一筆閱讀 291評論 0 0
  • “在幻變的生命里,歲月原是最大的小偷胧华〖闹ⅲ” 看了三遍《歲月神偷》,有笑有淚有所想矩动,也記住了這句話有巧。當看到進二把所有的...
    Jasmine云閱讀 206評論 0 0