北京尚學堂|程序員通常遇到BUG怎麼辦

版權聲明:本文爲北京尚學堂原創文章,未經容許不得轉載。前端

 

開發應用程序是一項壓力很大的工做,人無完人,工做中遇到bug是很正常的事,有些程序員會生氣,沮喪,鬱悶,甚至泄氣,也有一些程序員則會比較淡定。如何進行修復bug的過程,是值得咱們好好推敲的。程序員

我想分享一些有關程序員在努力修復bug時常說的話和冒出的想法。當氛圍變得緊張的時候,這些話就會顯得輕鬆幽默。最終,bug也會修復成功,你將會繼續下一個任務。web

我相信許多web開發人員和軟件工程師在編程中都會遇到困難,而過後回想起來,還會以爲很可笑。數據庫

一、我不知道該刪掉仍是重寫編程

 

迴歸曾經寫的源代碼,總有一種想要從新返工的衝動,邏輯性差,冗餘代碼多,讓人難以理解。可是,若是功能沒出現問題,千萬不要去修改。這是我常常要面對的困擾,相信也困擾了其餘很多的軟件開發者。後端

二、一開始架構時就該查Github瀏覽器

相信絕大多數開發人員都知道Github,它上面天天都會發布的一些神奇的開源項目。涉足全部計算機語言的程序員,會利用網絡對現有項目進行分叉,在維基論壇談論或者回購他們本身的源代碼,這些都爲各類各樣的項目的插件和模板提供了不少豐富的資源。緩存

三、爲何這個腳本要依賴這麼多庫服務器

說到一些愈來愈被普遍使用的計算機語言,像Java和Objective-C,庫文件的數量也不斷增長。很明顯能夠看出,構建一個框架就須要許多的基礎庫,甚至一些javascript的插件也須要不少大量的附加文件。有時候這些亂七八糟的東西會很讓人心煩,可是至少它能運行。微信

四、網上必定有解決辦法

遇到困難時,個人第一反應就是上網查資料,不少程序員會在論壇上發佈他們的問題,最終這些問題都會被解決並存檔。Google會很神奇地選擇一些跟你的問題相關的關鍵字,你就可以垂手可得地獲得一些對你有幫助的討論信息。不幸的是,有時候對於一些特定的問題,相關的信息還不是不少。

五、有這個功能的插件嗎

何須要畫蛇添足插件是擴展任何程序或者網站用戶接口的很好的資源。另外它們還爲開發者提供了一些定製以及獨特的選項。若是沒有可用的插件,那你爲何不本身建立一個呢?

六、對於網站項目,我好擔憂坑爹的InternetExplorer

使用IE渲染網頁遇到的各類困難,我就不提了,從5。5版本到IE9-IE10,對於瀏覽器的支持問題的爭議就一直不斷。Web開發人員會很懼怕網頁調試,使用IE6進行渲染更是噩夢。,幸虧那些日子已經慢慢成爲歷史了。

七、有些邏輯語句,並不符合邏輯

有一些邏輯語句,像if/else循環,for循環,while循環,do循環…等等,還有不少。在回顧一些源代碼時,我老是盡力想弄明白個人邏輯是怎麼回事。我常常會回頭更新代碼,讓邏輯更清晰。

八、我花30分鐘寫個函數,運行它卻要花2個小時

這不是十年前的一個有關編程的故事嗎?當一切都在按照你所所期待的順利進行着,忽然某個函數輸出了一個致命的錯誤,因此你不得不回頭刪除代碼塊,試圖定位出錯的代碼行。儘管這會讓你筋疲力盡,可是一旦找到錯誤的緣由,問題解決以後,你又會立馬感到渾身輕鬆。

九、讀了幾篇博客後,我才意識到我以前所作的全是錯的

我老是喜歡根據本身的編程思想直入主題,可是若是事情沒有按照我本來的計劃進行時,會致使不少麻煩。有不少次,我在作項目時,途中都遇到了麻煩,最後只得查找博客和相關文章去尋求幫助。而後又發現個人整個方法徹底錯了,還不如從頭開始更容易點。因此從長遠來看,在項目開始時多作點研究反而會節省時間。

十、StackOverflow上有好心人或許能幫助我

我已經數不清有多少次,遇到問題都是經過StackOverflow獲得解決的。只要你提出問題,社區裏就會有不少聰明,友好的熱心人願意幫助你。全部的在線論壇裏,它絕對是支持軟件編程和先後端web開發的最全面的網站。

十一、這個問題居然就由於少了個右括號

 

調試是咱們常常要用的方法,向前兩步,回退一步,再向前兩步,如此反覆。爲了查找函數命名或者變量做用域等錯誤,盯着代碼看了數個小時,結果發現只是缺乏了一個括號,你會有種啼笑皆非的感受。全部的時間都浪費在了一個小小的語法錯誤上,那一刻,你會以爲本身既是天才,又是傻子。

十二、喝杯咖啡,休息一下

有的時候你須要起身離開顯示器,連續敲了幾個小時的鍵盤,若是中間休息一下,會對你的身體有益。大多數健康指南都建議每30-60分鐘休息一次。可是仍是要取決於你的須要,若是你感受中間暫停去休息會打斷你的思惟,讓你很不爽,那就最好不要了。

1三、我應該先把這個項目放一放,稍後在處理它

休息的另外一種方式就會暫停你手中的項目,而不是離開你的電腦桌。或許你還有其餘的工做要作,那就繼續下一項任務。比起試圖在一個花了5個小時還沒解決的問題上繼續掙扎,這會是一種更合理地分配時間和資源的方式。

1四、我在想或許古典音樂可以激發個人編程潛能呢

有一種說法認爲古典音樂能促進植物的早期生長,我我的更偏心古典音樂錯綜複雜的註解和音樂理論。爵士,鋼琴,大型樂隊,優雅的音樂在全球各地的人類文化都佔有一席之地。因此編程的時候聽點美妙的音樂會讓你調試起來更駕輕就熟呢。固然也有可能,會讓你更加心煩意亂。

1五、或許如今是驗證鮑爾默峯值理論的好時機

我相信不少讀者都知道鮑爾默峯值,它是根據一個特殊的XKCD漫畫得來的。簡單來講,這個理論認爲程序員的編碼能力在喝了定量的酒後,會達到一個峯值。這個起源於SteveBallmer的些古怪滑稽的姿態被認爲是像一個醉漢在說胡話。儘管這有點諷刺,由於鮑爾默在微軟歷來算不上一個真正的程序員,猜測咱們只有等其餘人來實踐這個理論了。

1六、是誰動了個人代碼?

 

這個聽起來有點像妄想症,可是有時候你很想知道是誰趁你補覺的時候寫的這些東西。回顧過去幾周或者幾個月的項目,會給你一種暈乎乎的感受。有時候你會不記得你寫過這些東西—儘管上週你還在參與這個項目。好像是我很瘋狂地寫的代碼,你卻歷來不知道…

1七、徹底不知道這是神馬東東

遇到的最糟糕的狀況應該是在研究源代碼時,徹底不知道它是在幹什麼,多是來自你本身的項目,也多是其餘人的項目,可是問題都同樣。這個時候,你必須肯定是否值得花費更多的時間去尋找其它解決方案或者仔細剖析代碼,研究它究竟是幹什麼的。

1八、直接google下錯誤提示

鑑於多年的PHP經驗,我不得不說Google真的是調試問題的最好的小夥伴。這對於Java和其餘的主流語言的境況必定是相同的。錯誤提示信息對咱們頗有用,可是你必須記住不一樣的錯誤代碼表明什麼意思。它讀起來更像是被翻譯過的計算機語言。幸虧有這麼多在線支持,讓咱們肯定這些錯誤信息表明的真正意思。

1九、今天應該到此爲止了,可我真的想把這個問題解決了

咱們都知道想要退出時的那種極度沮喪的感受,可是同時又以爲放棄不是正確的選擇。你很想繼續前進,找出新的解決方案來。可是若是到最後仍是浪費了一個小時,那該怎麼辦?我對這種狀況並不陌生,它會讓人特別沮喪。

20、哦買糕的,爲何我都沒寫註釋呢

 

若是涉及到最基本的前端代碼HTML/CSS/JS時,並不須要老是寫註釋。可是若是是比較複雜的腳本和程序時,就須要寫一些標準的註釋以便你幾個月,甚至幾年後來重溫這些代碼。有時候你會忘記給函數,參數,輸出格式以及其餘重要的數據寫註釋,這無疑會致使發生bug時你不得不調試整個腳本去尋求解決方案,感到很是困惑,到那個時候你會以爲要是有一些有用的註釋該多好啊。

2一、這個20分鐘以前還好好的呢

或許構建程序時最讓人沮喪的是,明明剛纔還好好的東西,沒有改過任何代碼,這會兒卻運行不起來了。我發誓這種狀況絕對有發生,並且它沒有任何意義—也許其它程序運行的是緩存版本呢而後也有一些時候咱們只更新了一丁點代碼,結果整個程序都崩潰而且徹底中止運行。那就會回退到最新的備份版本,從那兒繼續吧。

2二、忘了一個該死的分號,整個程序都崩了

幾乎我用過的全部的編程語言都要求每行結束時都要有結束符,但並非全部的語言都這樣,不過Java系列語言絕對是這樣。當你忘記添加分號結束符時,這是多明顯的錯誤!可是解析器並不不理解,便拋出一個致命的錯誤。接下來就得再花費20分鐘時間去研究代碼,查找技術錯誤。最終發現只是少了一個分號。哈,這就是軟件調試的樂趣。

2三、我想要招人來幫我修復bug,得花多少錢哪

 

僱傭程序員的想法聽起來很誘人,但顯然在經濟上是不可行的。另外,若是你連本身的的錯誤都沒解決,你又怎麼能從這些錯誤中學到東西呢?經歷屢次失敗,最後當你真正理解了編程的概念後,你會頗有成就感。但有時候腦子裏不免仍是會閃過這種想法。

2四、快速瀏覽下HackerNews,確定能提升個人效率

不少程序員對於瀏覽軟件和創業等社會新聞的偏心選擇都是HackerNews首頁。它有大量的關於自由職業,時間管理,軟件開發,創業發佈和籌資資金等方面很棒的信息。儘管HN可以模擬出經過自我教育更加高效的感受,但實際上是在浪費你的時間。每隔幾小時去快速瀏覽下新聞也沒那麼糟糕。

2五、這個API怎麼沒有說明文檔啊?

最讓人沮喪的事情就是使用插件或者框架時,自帶的文檔很糟糕,你只好本身去深刻閱讀源代碼。我更喜歡讓開發人員花時間專門爲項目設計一個文檔頁,對全部的參數和選項都給予解釋,有可能的話,給出一些示例代碼。可是很遺憾,這種狀況幾乎不可能。因此最簡單的辦法就是遠離那些附帶文檔很糟的工做,以避免給本身帶來麻煩。

2六、我真但願我已經對數據庫進行備份了

在編寫和調試代碼的時候,我有時候會想不到備份。然而,數據備份可以幫助咱們回退到作出某個特定的改變以前的版本,這對一個即時的服務器環境是特別有用的,有些變化瞬間就會發生。切記在本地保留對網站文件和數據庫的拷貝,以備急需。你可能會以爲這樣太麻煩了,可是總比你重建一個SQL數據庫強多了。

2七、怎樣才能快速解決這個問題?

 

若是花費了數小時後,仍然未找到一個解決辦法,很明顯你須要一個新的方案了。程序員老是想要先實現功能,而後再去設計和美化界面。先肯定一個最快的,最準確的解決方案,並盡力去實現和完成,而後再去考慮美化界面的問題就會很輕鬆了。

2八、我敢打賭,你更新下個人代碼,這個問題就解決了

那些爲編程語言提供依賴包和插件的團隊並不須要頻繁地發佈產品。有時候從本地傳送文件到服務器的時候,更新PHP/Ruby/Python/SQL版本可能會解決一些調試問題。除非你的版本實在太舊了,不然本地更新不多可以幫助你修復源代碼中的bug,不過仍是值得一試!

2九、我真的該好好學習Git了,…仍是下週吧

開源的版本控制控制軟件Git在程序員中廣受歡迎。跟其餘競爭對手相比,它提供了一條更簡單的學習曲線,被應用在了許多在線倉庫像Github和Bitbucket中。可能對初學者來講,會有點難度,可是一旦你掌握了基本命令,你會發現使用GIt就是小菜一碟。它還讓版本控制更加清晰。

30、算了,我仍是從頭開始吧

 

有時候嘗試了數小時的解決方案後,你可能須要將你的工做文件歸檔(或者刪掉它們),從新開始。這個決定的最大難點就是你會考慮到前面數小時的工做會毫無收穫。可是若是你保留以前的想法,項目卻毫無進展時。從新開始,纔有可能讓項目順利完成。

更多Java培訓,Java視頻,Java教程盡在北京尚學堂Java培訓,關注北京尚學堂官方微信,得到一手Java最新知識。

相關文章
相關標籤/搜索