程序員在普通人的印象里是一份嚴(yán)(ku)謹(jǐn)(bi)的職業(yè)漱受,也是一個(gè)被搞怪吐槽樂(lè)此不疲的職業(yè)放案,程序員們面對(duì)復(fù)雜的代碼敲打電腦時(shí)連眉頭都不會(huì)皺一下,但是有一個(gè)詞卻是他們痛苦的根源吝沫,它就是Bug爬坑。
當(dāng)程序員找 Bug 的時(shí)候
程序員調(diào) Bug 的感覺(jué)纠屋,就是這樣的一波未平,一波又起
開(kāi)發(fā)人員在演示中如何隱藏 Bug
叫新手程序員幫忙改 Bug
牛 X 程序員和 Bug 之間的 PK
千萬(wàn)不要和程序員直接說(shuō)有 Bug
面對(duì) Bug盾计,一些程序員會(huì)生氣售担,會(huì)沮喪,會(huì)心煩意亂署辉,甚至?xí)倚膯蕷庾粕幔硪恍┏绦騿T會(huì)依然保持冷靜沉著。因此涨薪,如何處理修復(fù) Bug 的過(guò)程也值得我們細(xì)細(xì)琢磨骑素。
我想分享一些程序員修復(fù)他們的源代碼時(shí)所經(jīng)歷的想法。我相信很多開(kāi)發(fā)人員和軟件工程師經(jīng)歷過(guò)這些艱辛刚夺,然后在事后一笑而過(guò)献丑。以下你經(jīng)歷過(guò)哪些?
1.“我不知道是要?jiǎng)h除還是要重寫它”
回顧從前老的源代碼侠姑,會(huì)有一種想要返工寫成較大塊集群的沖動(dòng)和誘惑创橄。丑陋的邏輯語(yǔ)句,還有冗長(zhǎng)的語(yǔ)法莽红,導(dǎo)致代碼非常難以閱讀妥畏!
但話又說(shuō)回來(lái)邦邦,如果代碼沒(méi)有壞掉的話,那就不要去修復(fù)它醉蚁。這種洶涌澎拜的斗爭(zhēng)是我經(jīng)常要面對(duì)的燃辖,而且顯然會(huì)困擾許多軟件開(kāi)發(fā)人員。
2.“為什么這個(gè)腳本需要這么多庫(kù)网棍?”
尤其是一些比較大眾化的語(yǔ)言黔龟,如 Java 和 Objective-C,庫(kù)的數(shù)量可能變得異常兇猛滥玷。當(dāng)構(gòu)建一個(gè)需要大量基礎(chǔ)的框架時(shí)氏身,所需的庫(kù)的數(shù)量就變得顯而易見(jiàn)得多。
3.“有沒(méi)有這個(gè)功能的插件惑畴?”
為什么要重新發(fā)明輪子蛋欣?插件是擴(kuò)大任何程序或網(wǎng)站用戶界面的偉大資源。此外如贷,它們還為開(kāi)發(fā)人員提供了一些自定義和獨(dú)特的選項(xiàng)豁状。萬(wàn)一真的沒(méi)有可用插件的話,為什么不自己構(gòu)建一個(gè)呢倒得?
4.“雖然網(wǎng)站可以工作,但我害怕 IE 瀏覽器夭禽∠疾簦”
從 5.5 版本升級(jí)到 IE9、IE10讹躯,總是需要爭(zhēng)取到更高級(jí)瀏覽器的支持菩彬。Web 開(kāi)發(fā)人員可能會(huì)害怕調(diào)試網(wǎng)頁(yè),因?yàn)樵?IE6 中打開(kāi)頁(yè)面是一個(gè)渲染噩夢(mèng)潮梯。值得慶幸的是骗灶,這樣的日子正在慢慢成為過(guò)去。
5.“對(duì)于邏輯表達(dá)式而言秉馏,這似乎并不怎么合乎邏輯耙旦。”
對(duì)于 if / else 循環(huán)萝究,for 循環(huán)免都,while 循環(huán),do 循環(huán)等等帆竹,都有邏輯表達(dá)式绕娘。當(dāng)瀏覽示例代碼時(shí),我試圖指出我的邏輯是如何工作的栽连。
6.“我用 30 分鐘寫函數(shù)险领,花 2 小時(shí)讓它工作侨舆。”
這難道不像我們自己的編程故事嗎绢陌?你正興致勃勃地在構(gòu)建著什么挨下,但是突然之間,函數(shù)輸出了一個(gè)致命的錯(cuò)誤下面。
所以复颈,現(xiàn)在你必須回過(guò)頭去刪除一些代碼塊,以找出錯(cuò)誤發(fā)生的行號(hào)沥割。當(dāng)你終于找到罪魁禍?zhǔn)缀睦玻⒔鉀Q它時(shí),雖然有種精疲力竭的感覺(jué)机杜,但也滿心安慰帜讲。
7.“在閱讀多篇博客文章之后,我意識(shí)到椒拗,我之前全都是錯(cuò)的似将。”
我常常會(huì)一開(kāi)始就根據(jù)自己的編程思想蚀苛,一頭扎進(jìn)去研究在验,但是這可能會(huì)導(dǎo)致麻煩,如果事情不像原先設(shè)想地那樣順利的話堵未。
最后我發(fā)現(xiàn)我的整個(gè)方法實(shí)際上是錯(cuò)誤的腋舌,而且從頭來(lái)過(guò)更容易!如果我開(kāi)始的時(shí)候能先做一番研究的話渗蟹,從長(zhǎng)遠(yuǎn)來(lái)說(shuō)块饺,反而節(jié)省時(shí)間。
8.“花費(fèi)大力氣才找出問(wèn)題的原因是缺少了右括號(hào)雌芽∈诩瑁”
調(diào)試是你必須要采取的步驟,進(jìn)兩步世落,退一步淮腾。盯著代碼數(shù)個(gè)小時(shí),以為函數(shù)名或變量作用域中有哪里搞錯(cuò)了屉佳,最后才發(fā)現(xiàn)是遺漏了一個(gè)括號(hào)来破,這滋味,酸爽得不要不要的忘古。所有這些時(shí)間都因?yàn)橐粋€(gè)小小的語(yǔ)法錯(cuò)誤而浪費(fèi)徘禁。
9.“喝杯咖啡,休息一下髓堪!”
有時(shí)候送朱,你只是需要站起來(lái)娘荡,遠(yuǎn)離顯示器。將鼠標(biāo)懸停在鍵盤數(shù)個(gè)小時(shí)驶沼,反而有助于打破常規(guī)炮沐。大多數(shù)健康指導(dǎo)都會(huì)建議我們每隔 30-60 分鐘休息一會(huì)。
但是這一切都取決于你的需要回怜,如果你覺(jué)得在程序中間休息更令人懊惱的話大年,那就不要中斷。
10.“我應(yīng)該把這個(gè)項(xiàng)目束之高閣玉雾,以后再來(lái)處理它翔试。”
休息的另一個(gè)選擇是離開(kāi)你的項(xiàng)目复旬,而不僅僅是遠(yuǎn)離你的電腦垦缅。如果還有其他工作需要做,那么不妨去做其他工作驹碍。
相對(duì)于已經(jīng)花費(fèi)了 5 個(gè)小時(shí)來(lái)解決問(wèn)題依然不得入門而言的話壁涎,這將能更好地分配時(shí)間和資源。
為什么程序員發(fā)現(xiàn)不了自己的 Bug志秃?
作為開(kāi)發(fā)就和我們成人一樣看到問(wèn)題總是以自己的世界觀來(lái)理解屯烦,導(dǎo)致理所當(dāng)然的就這樣就對(duì)了思瘟,而真正的真相就被隱藏了毙驯。
當(dāng)程序員面對(duì) Bug 的時(shí)候张抄,如何機(jī)智甩鍋?
當(dāng)你面對(duì) Bug 時(shí)碑定,切勿慌張,以下措施教你輕松應(yīng)對(duì) Bug 帶來(lái)的困擾又官。
打死不承認(rèn)延刘,這代碼不是我寫的,將鍋甩出去六敬。
2.睜眼說(shuō)瞎話碘赖,在我電腦上是正常的呀,超級(jí)無(wú)辜外构。
賺取同情分
3.對(duì)方使用了錯(cuò)誤的打開(kāi)方式普泡。
一定是對(duì)方的打開(kāi)方式不對(duì),重新打開(kāi)試試审编,我神馬都不知道
4.痛斥產(chǎn)品經(jīng)理一頓撼班,自己偷偷改好,氣勢(shì)不能弱垒酬,立場(chǎng)要堅(jiān)定砰嘁,迅速進(jìn)入角色件炉,完全沒(méi)有 Bug 這回事,我就是王道矮湘。
以上模式可任意切換使用斟冕,但最終都逃不了,自己背地里偷偷缅阳,改 Bug 的宿命磕蛇。