Ⅰ 又遇到Bug了,程序員會怎麼反應
開發應用程序是一個非常有壓力的工作。沒有人是完美的,因此在這個行業中,代碼中出現 bug 是相當普遍的現象。面對 bug,一些程序員會生氣,會沮喪,會心煩意亂,甚至會灰心喪氣,而另一些程序員會依然保持冷靜沉著。因此,如何處理修復 bug 的過程也值得我們細細琢磨。
Ⅱ 你的代碼出bug了,程序員聽到這個時的表現太真實了
這個大撒比寫出這么個爛代碼,幸虧有哥這樣神一樣的存在才發現,哥真是救世主。
這個程序運行很久了是不是真有bug啊,是不是你弄錯了啊,可以重現么,什麼?可以重現,有尼瑪問題也不大,要不用戶早投訴了,瞧你那驚慌失措的樣子,真想吐你一臉狗屎。
這個bug隱藏的很深啊,還好哥犀利犀利,沒有被領導發現,今晚加個菜。
這個程序剛上線還處於調試階段,有bug很正常,誰的程序沒bug,連操作系統都有bug。
哥就是犀利,自己開發自己測試,看測試那幫撒比什麼也不會干,這么明顯的bug都測不出來,真是一群廢物。
1、「是刪除它還是修改它呢?好糾結 !」
2、網上一定有解決辦法。
3、是誰動了我的代碼?
4、完全不知道這些代碼是神馬東東。
5、哦,為什麼我都沒寫注釋呢?
6、算了,廢了他,我還是從頭開始吧!
程序員自身可以在程序生成的每個階段做這些工作: 仔細的設計、編寫代碼時、單元測試(重要)、功能測試。
Ⅲ 程序員遇到解決不了的bug怎麼辦
但大部分程序員都有一個問題就是不太願意測試自己的代碼。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。
1. 影響了程序員自己的聲譽
2. 影響了產品的質量
3. 影響了客戶的信任度
4. 這個時候再 DEBUG 難度增大了許多。
大的不說,就說多自己聲譽的影響吧。如果你的程序總會有這樣那樣的 BUG ,你得到收益會減少,即使你寫了很多代碼。
程序員必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程序員對自己的代碼都非常寬容,認為那是正確的沒有問題。實際上這種想法比較正常,程序是通過程序員思考和設計之後才寫出來,程序員不會將自己認為不正確的東西寫到代碼里,而到這個時候都一直假設程序是正確的;但人非聖賢,怎麼可能不犯錯誤來。實際上程序員在對待其他程序員時候的態度就很好,帶著一種挑剔和學習的態度;但一旦對待自己的代碼就很難這么做;這就是最致命的。程序員也必須對自己的代碼帶著挑剔和學習的態度;這個基礎是假設自己的代碼是錯誤的,然後需要做的是怎麼樣證明自己的代碼是正確的。程序員自身可以在程序生成的每個階段做這些工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程序有清晰的輪廓後才能開始動手寫)、編寫代碼時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。
仔細的設計:這個的仔細是說在程序員編寫代碼之前,其必須對代碼的整個結構以及邏輯結構有明確的清晰的了解,只有這個時候才可以去寫代碼。這里沒有談到文檔,但我說到了一定要清晰的思路,但清晰的思路不是每個人都可以在腦袋中直接形成的,很多人都是普通人,沒有辦法在腦袋瓜中把所有問題都想清楚,那麼就記下來,特別對於復雜的邏輯。
編寫代碼:對於沒有把握的代碼,例如:新設計的演算法,最好保證其正確性。可以單獨將這部分測試,這可以讓代碼模塊化的同時又保證了代碼的正確性。一句話:少量的代碼保證質量還是比較簡單的。
單元測試:單元測試的重要性不在贅敘了,現在也有許多工具可以幫助程序員並減少工作量。
功能測試:程序員保證自己代碼質量的最後一關;為了做這樣的工作我們可能必須寫一些代碼來測試,甚至是測試工作。使用大量的 CASE 來測試,以及錯誤的 CASE 。這里和測試人員的測試不同之處在於:仍然讓程序員的注意力放在其自己的代碼范圍內,減小了排錯的難度。
如果你通過了以上的步驟都找不出你程序中有任何問題的話,那麼我想你的程序應該足夠健壯了。其實還有一點必須說明的就是:代碼 REVIEW 。
前面說道了程序員對待別人代碼的態度是挑剔和學習的態度,所以讓其他程序員來 REVIEW 你的代碼也是檢查程序有沒有邏輯錯誤的很好的辦法。團隊中應該交叉 REVIEW 代碼,這是實踐的經驗。
作為一個好的程序員必須有以上的習慣,以及對待自己代碼象孩子一樣,我們要愛惜我們的代碼,同時也要讓代碼走正確的路。
Ⅳ 程序員發現 Bug 的時候是怎樣一種心境
我覺得程序員發現bug,應該就有一種學霸發現做錯了一道題的感覺,根據這張題出現在自己試卷上還是出現在別人試卷上應該是有不同的心情的,下面就程序猿的心情來簡單聊一聊。
有時候覺得程序員真的是很牛逼,那麼一大串外星文字寫出來,真是完全看不懂,人家還能一心二用,一邊寫程序,一邊看小說。
Ⅳ 互聯網前輩總是說「bug是改不完的」,新入職的程序員該怎樣應對bug
互聯網前輩總是說“bug是改不完的”,新入職的程序員應對bug:
Ⅵ 程序員修復bug的吐血過程,太形象了
當別人向程序員報一個bug,直到程序員把bug完整的修復好,整個過程是一個怎樣的經歷?
下面用一個維修工的故事類比一下,相信會很多程序員都會感到似曾相似!
假如你是一個電燈維修工程師。
一天晚上,有人想你反饋了一個bug:「18樓會議室的燈亮著,你要去把它熄滅」。bug的備注里還寫到:這個bug很簡單,你只需要按一下開關就可以關掉了,你應該在5分鍾內修復這個bug。
你上到了18樓的會議室,燈的確是亮著,但是房間里沒有這盞燈的開關。
怎麼辦?這時候你打算安裝一個開關,然後通過開關把燈關掉,完美!
這個時候設計師會跟你說,它會破壞房間的美感。另外,牆壁是混凝土做的,你得有合適的工具和其他人的配合才能安裝。但此時此刻,你找不到這些工具和人員來幫你。
如果沒有這些輔助工具,安裝開關,保守估計要2天時間。但是他們希望你只花5分鍾就把燈關掉,因為他們害怕CEO哪天會經過18樓會議室,問為什麼燈是亮著的,怕被問責。
5分鍾過去了,你的手機響個不停,他們反復問你為什麼燈還亮著,為什麼按一下開關就能關掉這么簡單的事你要弄這么久?
為了盡快解決問題,你實在沒辦法,所以,你設法進到了 18 樓走廊的天花板里,找到了會議室燈的電線,一刀切斷,燈關掉了,問題解決了,你告訴了他們:你把先切掉了,燈就關了。
你的手機也安靜了,但好景不長。
他們又有了新的疑問:線被你切掉了,如果哪天我們想開啟會議室的燈,怎麼辦?因此,他們要求你把這盞燈的線牽引到地下室去,因為那裡有開關,等他們需要開燈的時候,就通知你去地下室幫他們開燈。
你抗議這個荒謬的解決方案。但是你的上司說:「是的,這個解決辦法不理想,但是現在是唯一的解決方案」。
這個時候你心裡罵了他們一句:SB!
現在你要麼按照他們的「荒謬」要求來做,要麼辭職另謀高就,但你想了想,一旦到了新的工作環境,也難免會遇到這種荒謬的事情。
你咬咬牙,把18樓會議室的線牽引到了地下室,你發現已經有10幾條線是從其他地方牽引過來的,這種荒謬的做法,你不是第一個做。你小心翼翼地把線牽引號,並盡人事地給左右地線做好了標記。
終於,你回到了你的辦公桌,把bug標記成:「已修復」。
可剛過不久,測試員又重新開啟了bug,並備注說:「會議室還是亮著的」。
你回到 18 樓的會議室。燈是滅著的。你返回辦公桌前,關閉了 bug,註明你已經親自檢查過了。
測試員再次重新開啟了 bug:「房間還亮著」。再次親眼確認燈泡滅著後,你將情況匯報給了上司。
他建議你去地下室檢查電線和開關。你抗議說你正直盯盯地看著燈,它就是滅著的。 「我知道,但去檢查一下。這樣一來你就可以告訴測試員你確認了所有流程。」
你嘆了口氣,前往地下室檢查了電線和開關。它們不可能以任何你能理解的方式導電。 你向測試員反饋,你檢查了電線和開關,它們不可能通電,你正看著燈泡,它是熄滅的。
「我不是指燈泡,」測試員說。 「bug 里描述的是房間里的光。房間現在仍然不夠暗,你應該拉下窗簾。「你回應說窗簾的事不歸你管。測試員不相信你說的話,親自去詢問你的領導。
經過一番激烈的討論之後,他們終於同意將窗簾的問題提交給其他部分去解決,太好了,燈光的問題暫時到此為止了,bug可以順利地關閉掉了。
現在,CEO突然決定要去18樓會議室開會。你接到通知,要趕去地下室,開啟18樓會議室的燈。
你以最快的速度去到了地下室,連上電線,按下開啟按鈕。回到了辦公桌,此時你的手機有了26個未讀消息:
「出問題了,燈還是熄滅的!」
「有個問題,燈沒有亮。」
「為什麼這么久還沒有亮燈?」
......
而最新的一條消息則是:「沒事了,燈是亮的,辛苦了哈」。
Ⅶ 如何向 程序員 描述 bug 笑話
1.程序員寫出自認為沒有Bug的代碼。
2.軟體測試,發現了20個Bug。
3.程序員修改了10個Bug,並告訴測試組另外10個不是Bug。
4.測試組發現其中5個改動根本無法工作,同時又發現了15個新Bug。
5.重復3次步驟3和步驟4。
6.鑒於市場方面的壓力,為了配合當初制定的過分樂觀的發布時間表,產品終於上市了。
7.用戶發現了137個新Bug。
8.已經領了項目獎金的程序員不知跑到哪裡去了。
9.新組建的項目組修正了差不多全部137個Bug,但又發現了456個新Bug。
10.最初那個程序員從斐濟給飽受拖欠工資之苦的測試組寄來了一張明信片。整個測試組集體辭職。
11.公司被競爭對手惡意收購。收購時,軟體的最終版本包含783個Bug。
12.新CEO走馬上任。公司雇了一名新程序員重寫該軟體。
13.程序員寫出自認為沒有Bug的代碼。
Ⅷ 優秀的程序員是如何處理技術 Bug 的
從初入職場菜鳥到職場大咖,很多程序員在努力充實自己,有時候我們需要對自己進行一次能力定位,了解自己的優勢和沒有掌握的技術。芯學苑列出幾點作為初入職場的新手評估自己,明了前進學習的方向。
1、技術能力(解決問題的能力)
這是非常重要的事;過硬的技術能讓你得到面試機會,並在工作中游刃有餘。當公司招聘一個Java開發人員時,是會優先考慮能力因素的。在實際的項目開發中,一個程序員的技術能力等於其解決問題的能力。
如果拿一個尺度來衡量這個能力的話,一個程序員的能力可以用能完成任務的數量和難度來衡量。一個程序員能基本無誤的完成項目中的一個功能算是合格,但在此之前,他對項目的生產力為負,為他布置的任務,中間環節的溝通,修補bug的時間其實要多於自己直接完成該功能的時間的。能較好完成一個完整模塊的程序員才算是較好的程序員,也是項目中的主要開發者。能獨立完成整個項目才是優秀的程序員。
2、專業基礎(知識的積累)
一個程序員的知識積累很大程度上決定了其解決問題的能力。知道如何編寫代碼是基本的技能,但是知道Java編程語言的原理,知道代碼背後的演算法將使你從人群中脫穎而出。
3、主流編程工具
今天,事實是,你不能成為一個樣樣都懂的人(雜而不精)。你必須選擇你要掌握的工具。有時這是由工作的環境決定的,但是按照下面說的去做也是一個很好的選擇:
構建工具:Maven或Gradle。
SCM:Git(不是GitHub。大不相同)。
構建自動化:Jenkins。
IDE:Netbeans或Eclipse——不僅用於編寫代碼,而且還從IDE中重構和調試代碼。我遇到了很多沒有如何從他們最喜歡的IDE調試的開發人員。
Bug跟蹤:Bugzilla或Jira。
4、JSF的知識
應用程序伺服器
所有Java開發人員應該知道如何在Apache Tomcat中部署。
當Glassfish開發停止時,下一個最好的事情是J Boss Wild Fly。
5、溝通的能力
溝通是我們做好一切事情的關鍵。我們必須與我們周圍的環境保持互動,無論是在我們的私人還是職業生活中。一個良好的程序員知道如何在各種團體面表達自己。也許對你來說顯而易見的東西在他人的角度來看並非如此。
從大的尺度(比如一個人的工作生涯)來看,一個程序員知識積累的多少只決定於其自學能力和他對編程本身的興趣。
在一個分工明確的項目中,程序員需要理解產品,和領導溝通理解自己的任務,和同事們溝通以正確的方式進行合作。無論哪一個方面溝通出了問題都不是小事情,同時,程序員還需要正確的傳達設計的實現難度,以及讓別人正確的理解自己設計模塊的介面。在不寫文檔時,正確的口頭溝通非常重要,需要寫文檔時,良好的編輯能力也算做是溝通能力的一部分。
6、自學能力
這是一個非常重要的技能,在你自己的空閑時間學習新的技能。不要等待公司為你提供培訓。你需要自己去學習新技術,提升自己在相關領域的水平。從Java後端開發到架構模式,總是有一些新事物值得學習。經常閱讀博客和論壇,嘗試加入本地聚會小組。你學到的東西可以幫助你的事業。知識刷新頻率極快讓人無法追趕的這個時代,難免會有超出自己知識范圍的時候,此時你的自學能力決定了你能多快的完成任務。
7、良好的團隊合作精神
無論是部分編程還是大型項目,所有開發人員都是作為團隊的一部分在協同工作。你需要致力於團隊的目的,或幫助新的團隊成員克服障礙。不要存在這種「我只要做好我的本職工作,下班就直接回家」的態度。成為團隊的一部分,幫助周圍的同事,對自己的能力也是不小的提升。
就像拿破崙說的不想當元帥的士兵不是好士兵,追求參與一個大型軟體系統的開發,是每個程序員的夢想。在此之前,應該學習更多的專業知識,達到優秀程序師的標准。最後希望各位程序員閱讀本文後能夠得到一些裨益,在這條路上走得更好。