導航:首頁 > 程序命令 > 程序員不會修復bug

程序員不會修復bug

發布時間:2022-10-15 01:14:58

程序員遇到解決不了的bug怎麼辦

但大部分程序員都有一個問題就是不太願意測試自己的代碼。他們草草的調式完成以後就認為工作結束,測試那是測試人員的工作。
1. 影響了程序員自己的聲譽
2. 影響了產品的質量
3. 影響了客戶的信任度
4. 這個時候再 DEBUG 難度增大了許多。
大的不說,就說多自己聲譽的影響吧。如果你的程序總會有這樣那樣的 BUG ,你得到收益會減少,即使你寫了很多代碼。
程序員必須克服一些自身的致命缺點才能夠從根本上解決這個問題。那麼這個問題是什麼?前面我們已經提到,程序員對自己的代碼都非常寬容,認為那是正確的沒有問題。實際上這種想法比較正常,程序是通過程序員思考和設計之後才寫出來,程序員不會將自己認為不正確的東西寫到代碼里,而到這個時候都一直假設程序是正確的;但人非聖賢,怎麼可能不犯錯誤來。實際上程序員在對待其他程序員時候的態度就很好,帶著一種挑剔和學習的態度;但一旦對待自己的代碼就很難這么做;這就是最致命的。程序員也必須對自己的代碼帶著挑剔和學習的態度;這個基礎是假設自己的代碼是錯誤的,然後需要做的是怎麼樣證明自己的代碼是正確的。程序員自身可以在程序生成的每個階段做這些工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程序有清晰的輪廓後才能開始動手寫)、編寫代碼時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。
仔細的設計:這個的仔細是說在程序員編寫代碼之前,其必須對代碼的整個結構以及邏輯結構有明確的清晰的了解,只有這個時候才可以去寫代碼。這里沒有談到文檔,但我說到了一定要清晰的思路,但清晰的思路不是每個人都可以在腦袋中直接形成的,很多人都是普通人,沒有辦法在腦袋瓜中把所有問題都想清楚,那麼就記下來,特別對於復雜的邏輯。
編寫代碼:對於沒有把握的代碼,例如:新設計的演算法,最好保證其正確性。可以單獨將這部分測試,這可以讓代碼模塊化的同時又保證了代碼的正確性。一句話:少量的代碼保證質量還是比較簡單的。
單元測試:單元測試的重要性不在贅敘了,現在也有許多工具可以幫助程序員並減少工作量。
功能測試:程序員保證自己代碼質量的最後一關;為了做這樣的工作我們可能必須寫一些代碼來測試,甚至是測試工作。使用大量的 CASE 來測試,以及錯誤的 CASE 。這里和測試人員的測試不同之處在於:仍然讓程序員的注意力放在其自己的代碼范圍內,減小了排錯的難度。
如果你通過了以上的步驟都找不出你程序中有任何問題的話,那麼我想你的程序應該足夠健壯了。其實還有一點必須說明的就是:代碼 REVIEW 。
前面說道了程序員對待別人代碼的態度是挑剔和學習的態度,所以讓其他程序員來 REVIEW 你的代碼也是檢查程序有沒有邏輯錯誤的很好的辦法。團隊中應該交叉 REVIEW 代碼,這是實踐的經驗。
作為一個好的程序員必須有以上的習慣,以及對待自己代碼象孩子一樣,我們要愛惜我們的代碼,同時也要讓代碼走正確的路。

㈡ 程序員為什麼要一直改bug,不能一次性寫好嗎

軟體可能在使用過程中沒有任何問題,但不符合產品的預期下圖源自「How projects really work?」,很形象的突出了客戶需要的產品和最終得到的產品不一致。


所以軟體想要變得成熟,Bug收集和處理機制是非常有必要的,比如:會影響客戶使用的優先順序高的Bug要優先修復。Bug是軟體的影子,也是程序員的噩夢實際上不能存在沒有bug的軟體,Bug和軟體如影隨形。就像我們使用的Windows,窮盡無數優秀的軟體工程師來設計給用戶優秀的桌面體驗,但也有各種層出不窮的bug。

程序員對Bug有多愛就有多恨,Bug無處不在,即使再牛逼的程序員也逃脫不了Bug的魔掌。想要完全避免Bug幾乎是不可能的,所以也不在一次性就寫好的程序。以上個人淺見,歡迎批評指正。認同我的看法,請點個贊再走,感謝!喜歡我的,請關注我,再次感謝!

㈢ 程序員遇到解決不了的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、良好的團隊合作精神
無論是部分編程還是大型項目,所有開發人員都是作為團隊的一部分在協同工作。你需要致力於團隊的目的,或幫助新的團隊成員克服障礙。不要存在這種「我只要做好我的本職工作,下班就直接回家」的態度。成為團隊的一部分,幫助周圍的同事,對自己的能力也是不小的提升。
就像拿破崙說的不想當元帥的士兵不是好士兵,追求參與一個大型軟體系統的開發,是每個程序員的夢想。在此之前,應該學習更多的專業知識,達到優秀程序師的標准。最後希望各位程序員閱讀本文後能夠得到一些裨益,在這條路上走得更好。

㈤ 10+年程序員總結的20+條經驗教訓

以下是我作為一名程序員經過10幾年時間總結出的一些有關於軟體開發的經驗規則:


開發


1.從小事做起,然後再擴展


無論是創建一個新的系統,還是添加功能到現有的系統中,我總是從一個簡單到幾乎沒有任何所需功能的版本啟動,然後再一步一步地解決問題,直到滿意為止。我從來沒有妄想過能夠一步登天。相反,我一邊開發一邊學習,同時新掌握的信息還可以用於解決方案中。


我很喜歡JohnGall的這句話:「復雜系統總是源於簡單系統的演化。」


2.一次只改變一件事


當我們在開發時,碰到測試失敗和功能無效的情況,如果你一次只研究一個問題,那將會更容易找到問題的關鍵。換言之,就是使用短迭代。必須確保這個問題解決之後,再轉移到另一個問題上。這適用於向下提交。如果在你添加新功能之前需要先重構代碼,那麼先提交重構,然後再添加新的功能。


3.盡早地添加日誌記錄和錯誤處理


在開發新系統時,我做的第一件事就是添加日誌和錯誤處理,因為這兩者從一開始就非常有用。如果系統不能照常工作,那麼你就需要知道程序中發生了什麼——這是日誌的作用。錯誤處理也是如此——錯誤和異常越早處理越好。


4.每一行新代碼必須至少執行一次


在你真正完成一個功能之前,你必須對它進行測試。不然,你怎麼知道它是不是按照你的想法在執行呢?通常情況下,最好的方法是通過自動測試,但並非總是如此。不過,不管怎麼說,每一行新代碼必須至少執行一次。


5.在整體測試之前先進行模塊測試


先進行部分模塊測試可以節省時間。通常說來,我們在整合不同的模塊時也會出現問題,例如模塊之間的介面不匹配。但是如果我們能夠信任各個組件的話,那麼跟蹤集成問題就會變得簡單得多。


6.所有事情所花費的時間總是比你預期的要長


特別是在編程中,即使一切進展順利,我們也很難對功能所需的時間做出正確的預算。並且,開發軟體時碰到各種意想不到的問題是非常常見的。


侯世達定律其實道出了真諦:做事所花費的時間總是比你預期的要長,即使你在預期中已經考慮了侯世達定律。


7.先了解現有的代碼


大多數的編碼都需要以某種方式改變現有的代碼。即使是新功能,也需要適應現有的程序。所以,在你加進去新的內容前,首先需要了解當前的解決方案。否則,你一不小心就很有可能會打破現有的功能。這意味著,閱讀代碼和編寫代碼都是必要的技能。這也是為什麼看似微小的變化仍可能需要很長時間才能解決的原因之一——你首先必須了解上下文。


8.閱讀和運行


幸運的是,對於理解代碼,我們有兩種互補的方法。你可以閱讀代碼,也可以運行代碼。運行代碼的確是個非常棒的好方法。所以,請確保充分利用這兩種方法。


故障排除


9.bug總是難免的


我不喜歡那些宣稱軟體開發可以「一蹴而就」的高談闊論。不論你再怎麼費盡心機,bug總是難免的。最好能夠做成可以快速故障排除、修復bug和部署修復的系統。


10.解決故障報告


每個開發人員都應該花時間去處理來自客戶的故障報告,並修復bug。這能讓你更好地理解客戶的意圖,明白如何使用系統,知道排除故障的難易程度,了解系統的設計情況。這也是為自己的開發成果負責的好方法。


11.重現問題


修復bug的第一步就是重現問題。然後你得確保修復之後,問題能夠徹徹底底地消失。這樣一個簡單的規則可以確保你不會誤將非問題當作是問題,並確保解決方案真的能夠奏效。


12.修復已知錯誤,然後再看看有沒有遺漏的地方


有時候,可能同時存在著幾個不同的問題。它們之間的互相作用,可能會讓你毫無頭緒,束手無策。不要糾結於搞清楚發生了什麼,先去解決所有已知的問題,然後再看看還有什麼不對的地方。


13.沒有巧合


在測試和故障排除時,不要相信會出現什麼巧合。就像你改變了定時器的值,那麼就會改變系統重啟的頻率。所以一切都並非是巧合。添加新功能,另一個不相乾的功能變慢了?這絕對不是巧合。相反,是你應該仔細調查的內容。


14.關聯時間戳


在故障排除時,事件的時間戳可以作為你的好幫手。尋找偶數增量。例如,如果系統重啟了,並且剛剛發出過一個3000毫秒左右的請求,那麼可能是觸發了某個定時器,才導致出現重啟的動作。


團隊合作


15.面對面的交流最有效


當我們需要討論如何解決問題時,那麼面對面的交流比視頻、打電話和電子郵件都要好。


16.橡皮鴨法


遇到你絞盡腦汁也解決不了的問題時,不妨找一個同事,然後將問題解釋給他們聽。很多時候,當你在敘述時,即使你的同事一言不發,你可能也會突然靈光乍現找到問題的關鍵。


17.問問題


閱讀和運行代碼往往非常有助於指出代碼的目的和它的工作原理。但是如果你有機會咨詢那些更為了解的人(例如原來的程序員),那麼千萬不要錯過。


18.共享榮譽


不要貪圖榮譽,該是誰的就是誰的。例如:「Marcus想出了這個主意」(如果真是他想的話),而不要說「我們想出的」。


其他


19.嘗試


如果你不知道某種編程語言功能的工作原理,那麼不妨寫一個小程序來理解它是如何工作的。這同樣適用於測試你正在開發的系統。如果我將參數設置為-1,會發生什麼?當我在重啟系統時,如果服務當掉,會發生什麼?以此來研究它的工作原理。


20.帶著問題睡覺


如果你正在解決一個很難的問題,那麼不妨帶著問題睡覺。有科學研究表明,這樣做雖然你表明上並沒有在主動思考,但你的潛意思卻這么做了。其結果就是,第二天再去研究問題,解決方案已經呼之欲出了。


21.跳槽


不要害怕跳槽。和不同的人共事,開發不同的產品,感受不同的公司文化是非常有意思的。


22.不斷學習


我們需要不斷地學習和了解軟體開發。你可以嘗試不同的編程語言和工具,閱讀軟體開發的書籍,接受MOOC課程。相信我,量變才能達到質的飛躍,這些小小的學習積累,終有一天會大大地提高你的知識和能力。


希望這些經驗能對大家有用。如有不當之處,敬請指正。

㈥ 互聯網前輩總是說「bug是改不完的」,新入職的程序員該怎樣應對bug

互聯網前輩總是說“bug是改不完的”,新入職的程序員應對bug:

㈦ 新人程序員是先修bug還是開發

先修bug。
對於處於實習階段的准程序員來說,主要的任務還是以學習為主,在實習的過程中要學習如何把自己掌握的Java編程知識應用到實際的項目中,同時需要了解軟體開發的過程,了解不同開發角色所面對的工作任務等等。
可能會安排你做一些比較基礎的工作,不會涉及到太復雜的工作,應該是先讓你適應環境和工作模式,任務的話也是靠學習來積累經驗。

閱讀全文

與程序員不會修復bug相關的資料

熱點內容
凈化車間門演算法 瀏覽:934
安卓怎麼搞jpg 瀏覽:544
如來佛祖命令雷神去下界 瀏覽:854
新電腦管家下載好怎麼解壓 瀏覽:528
php獲取介面數據 瀏覽:763
最後的命令 瀏覽:921
如何添加手機app桌面快捷圖標 瀏覽:427
ui設計師與程序員 瀏覽:417
壽司pdf 瀏覽:828
pythonbg是什麼 瀏覽:248
c數值演算法程序大全 瀏覽:785
android整點報時 瀏覽:221
稀土pdf 瀏覽:536
單片機電子鎖 瀏覽:596
通達信機智資金流指標公式源碼 瀏覽:216
php安裝xsl擴展 瀏覽:842
python如何使用help 瀏覽:367
上汽榮威app在哪裡查詢 瀏覽:903
冰櫃壓縮機溫度108 瀏覽:720
阿里雲郵smtp伺服器地址 瀏覽:254