導航:首頁 > 程序命令 > bug很少的程序員

bug很少的程序員

發布時間:2024-06-02 03:24:18

程序員如何讓自己的程序少出BUG(轉)

軟體測試心得
,而且還經常寫一些工作上的事,現在感覺自己老了似的,開始轉型了,會選擇寫一些總結而不是瑣碎,也許這是我以後當領導的徵兆吧。
程序員是善於思考的一個職業,做過這行的都知道,寫一個程序的過程都要經過構思、設計、寫代碼、測試到最後運行這幾個步驟。慢慢地,這個習慣也被搬到了生活中,現在我才覺得,我平時做事這么的冷靜善思考原來是工作影響的原因。
象我一樣,大多程序員都有一個毛病,或者說一個習慣,自己編寫過的代碼都不願意測試,他們憑著自己的習慣,理論上完成了代碼的編寫就認為自己的工作結束了,剩下的工作應該交給測試人員了。但實際上來講,如果代碼存在BUG,造成軟體在運行期出錯,那麼測試人員和客戶肯定會發現這些BUG的,再等到測試人員或者客戶把BUG反饋回來的時候代價就已經很大了,不僅僅是時間的浪費,更重要的還有1、影響了客戶對產品以及公司的信任度,2、影響了程序員自己的聲譽,3、影響了代碼的可讀性以及質量,4、增加 了DEBUG的難度,5、對程序員的心理造成一定的影響。
首先,程序員應該克服自己身上的一些缺點,這是很重要的一點,因為每個程序員都有自己的編程習慣,而且每個程序員對自己剛剛完成的程序都會信心百倍的說「絕對沒問題」,實際上這種想法很正常,因為每段代碼都是通過程序員認真謹慎的思考和設計之後才寫出來的,在設計時已經排除了很多問題,所以程序員不會將自己認為不正確的判斷寫到程序里,但這僅僅是理論上的想法,但人哪有不反錯的時候。其實程序員在讀其他人寫的程序的時候,就會很謹慎,仔細找到程序上的錯誤,但對自己的代碼就很難這樣做,如果把這種謹慎應用到自己的代碼上來,BUG會減少到最少。軟體工程所說的各階段工作想必大家都清楚,前期的設計以及需求分析才是一個軟體工程的重點,這里也是花費時間最多的地方,當對要寫的程序有了一個清晰的輪廓之後再動手編寫代碼。
第二,剛剛提到的前期設計,是指在編寫代碼之前所作的工作,這要求程序員對系統的整個結構以及邏輯有很清楚的理解,這也要求對系統的需求做到位。我沒有寫過文檔,所以這里不談文檔了。思路清晰很重要,但每個人並不能將系統的整個設計思路都記在腦袋裡,那最好就寫下來,特別是一些復雜的邏輯結構關系還有復雜的演算法
第三,代碼的編寫,要盡量減少拼寫的錯誤,嚴禁使用關鍵字作為變數來使用,要盡量做到代碼模塊化,並且保證其正確性和可重復使用性。因為是模塊組成的,寫過之後可以將每個模塊部分單獨測試,因為代碼量少了質量自然提高了。對順序執行要求很高的函數盡量不採用調用子函數的方法,讓程序按順序走吧。
第四:代碼檢查以及系統功能測試,這是保證代碼質量的最後一步了,我們可以寫一些代碼模塊或者小工具來進行測試工作,跟蹤變數值的變化,使用一些小技巧在這個階段都是必要的,這里和測試人員的測試不同之處在於:仍然讓程序員的注意力放在其自己的代碼范圍內,減小了排錯的難度。
按照如上步驟來走的話,那麼我想你的系統應該足夠健壯了。
把對待別人代碼的態度放到自己的代碼上來,也就是反復的Review自己的代碼檢查邏輯錯誤也是相當好的辦法。別把自己辛苦寫的代碼看的很值錢,在團隊中盡量與別人分享、Review代碼這是實際工作的經驗。
作為一個優秀的程序員要具備這些習慣,看自己的代碼就象對待自己的一樣,愛惜、呵護是必須的,同時也要象園丁一樣及時修剪多於的樹枝來讓自己的代碼走正確的道路。

❷ 程序員遇到百度不出來的bug都是怎麼解決的

筆者不同意下面網友的回答。程序員如果解決bug的水平停留在網路,那麼本質上只是一個「面向搜索引擎的代碼搬運工」,是不合格的程序員。

程序員對面bug,正確的「打開方式」是像福爾摩斯和柯南那樣,尋找線索、運用邏輯推理來縮小問題可能的根因范圍,最終精準定位。

常用的方法有:

1. 壞境上下文變換法

2. 工具調試法

3. 版本回溯對比法

4. 代碼審計法

……

沒有編程問題是stack overflow和Google解決不了的,假設你在編程中遇到了問題,你自己解決不了、你周圍的的人都解決不了的時候,我覺得stack overflow、Google是你最好、也是最後的幫手。

作為一個程序員,我覺得Google、stack overflow是你必須要學會使用的兩個工具,這兩個工具本身並沒有使用門檻,只不過因為一些眾所周知的原因,很多人不能使用Google和stack overflow這兩款工具。

Google主要還是方便,而且很多編程問題都需要用到英文搜索,當然現在網路在專業能力上也提升明顯,不過跟Google也還是有比較大的差距,因此我還是強烈建議要學會使用Google,這會幫你在工作、學習上事半功倍。假設Google確實因為某些原因沒辦法很好的使用,我也建議你至少要會使用Bing搜索。

現在可以說stack overflow上沒有你找不到的問題了,從IDE環境安裝問題,到各類編程語言問題。演算法問題,數據結構問題,調試,重構等等,幾乎這里就沒有你找不到的答案,可以說在stack overflow上你可以找到任何解決方案,並且上面的回答者基本上都是非常有經驗,而且都是實際中遇到的問題分享出來的,這個工具一定要會使用。同理,除了stack overflow這個專業的垂直程序員問答社區,你也可以使用Quora這個綜合問答社區,這上面也能找到很多問題的答案。

一些比較優秀的文本編輯器: Emacs/Vim,Visual Studio Code,Sublime Text,Atom,Ultraedit,Hbuilder等。

一些比較非常出色的IDE集成開發環境: visual studio,IntelliJ IDEA,PhpStorm,Haskell for Mac ,eclipse,WebStorm,GoLand,CLion,Android Studio,Xcode,QT等。

macOS平台比較好的第三方包管理工具: Fink,Macports,Homebrew等。

一些比較好的終端工具: Zoc7,iTerm2,Cmder,terminus,hyper等。

一些比較好的筆記軟體、markdown工具、效率工具: Evernote,有道雲筆記,為知筆記,Ulysses,MWeb,FileZilla,Snipaste,Kantu等。

虛擬機軟體、容器軟體: Parallels Desktop,VMWare Fusion,Virtual Box,Docker等。

我是個程序員,職務是linux底層驅動工程師。平時的主要工作是調試驅動,但產品遇到諸如死機、重啟、不開機之類的問題時,也要參與查找原因。一部分問題,確實可以查看相關的log,然後網路這些log的關鍵字來解決;但更多的問題,牽扯的條件太多,並不是簡單的網路就能解決的。

觀察了周圍同事們的做法,我總結出以下幾種解決方法:

網路因為競價排名的原因,搜索出來的結果有很多廣告的成分,所以有時候要翻好幾頁才能看到一條相關的答案,有些甚至要翻幾十頁。

因為網路搜索使用的是SEO技術,即普通用戶可以通過優化網站內容來提升關鍵詞排名。

而這就會導致一個問題:你搜索關鍵詞後展現出來的結果是有人想要讓你看到的,並不是質量最好的。

也就是說,網路搜索結果被人為干預了。所以網路一直被網民所詬病。

但網路搜索不出結果,未必是網路的原因,也有可能是自己輸入的搜索詞不準確造成的。所以對於網路,我們要做到如下幾點:

除此之外,網路搜索還有點小技巧,粥左羅《萬字干貨,徹底講透搜索技巧,10倍提升你的搜索力(免費教程)》這篇文章寫得非常好,我整理幾點,僅供參考:

01 過濾目標內容

命令:「+」「-」

用法:通過「+」和「-」來對搜索結果進行過濾

比如在關鍵詞後加上「-推廣 -推廣鏈接」就可以排除搜索結果中包含相應字樣的鏈接。如果你發現廣告還沒有排除干凈,你也可以再加上「-廣告」通常就能徹底的消滅廣告。

02 搜索包含某關鍵詞的內容

命令:「intitle」

用法:通過「intitle」命令指定搜索結果中要包含的關鍵詞,注意「intitle」後邊連接的冒號是英文狀態下的。

03 搜索某一個格式的文件

命令:「filetype」

用法:通過「filetype」命令可以限制我們要搜索文件的類型,注意「filetype」後邊接的冒號也是英文狀態下的。

04 搜索特定時間范圍的內容

命令:「時間..時間」

用法:通過「時間..時間」命令可以限制我們要搜索的文件的時間,注意兩個時間的中間頓號沒有空格。

相對網路,谷歌、必應對於技術搜索,就相對准確許多,所以當你網路搜索不到時,嘗試下別的搜索引擎,說不定會有新發現。

現在程序員使用的機器語言,都是國外的,更准確的說,都是美國的。所以很多論壇、資料等,都是英文。如果你只會用中文來搜索,某些小眾的問題,當然搜不到啦。

所以,要學會使用英文關鍵字來搜索。

有時候甚至要去國外的一些論壇來搜索想要的答案,這就要求要有一定的英語閱讀能力,不能一看到英文帖就放棄。

有時候不管你如何搜索,都找不到自己想要的答案,該怎麼辦呢?這種情況下,就只能硬著頭皮嘗試自己解決了。

或者,尋求同事或朋友的幫助,尋求大腦風暴,說不定就會有思路。

如果有些問題是因為新器件帶來的,還可以找到器件供應商,讓他們安排技術支持幫忙查找原因。

除此之外,還可以把問題整理好,寫清發生的條件、復現步驟、測試方法、相關的LOG截圖等資料,去一些技術論壇發求助帖,尋找大牛的幫助。

做技術時間久了,發現有些問題確實無解,根本沒有辦法去解決它。

這時候,我一般會嘗試把它繞過,就是說,想辦法讓它無法復現,雖然問題還是存在,但是能把它掩蓋過去。

比如有些驅動在開機啟動時會載入不正常,那麼就讓它晚點啟動,或者手動載入。這也不失為一種解決問題的方法。

以上就是我的建立,希望對你有幫助。

首先作為一個程序員,一個優秀的程序員最最最重要的能力就是解決問題的能力。這里解決問題的能力當然就包含了解決 bug 能力了

畢竟,程序員這一生,可能會寫無數個 bug ,沒有說哪個程序員敢保證自己寫的程序沒有 bug 。 所以,寫了 bug ,遇到 bug 並不可怕,可怕的是你沒有解決 bug 的能力 。

作為一個程序員,解決 bug 的途徑有哪些呢?我們來一起聊一聊!

其實,每個程序員在學習編程的時候,都會使用編程工具,而現在的開發工具,其實功能都很強大。如果你自己合理利用編程工具,都了解和懂得開發工具的一些技巧,其實不僅僅能夠提高開發效率,而且還能夠幫助你解決很多編程中的實際問題。

debug 調試,大部分你常用的開發工具,都會有調試模式的,簡而言之,就是你編程的時候,遇到了不是自己所想的結果的時候,你可以使用 debug 模式,來一步一步的調試,在調試模式下一般每一步都會顯示所執行的結果,你可以看看在哪一步出錯了,執行的結果與你預想的結果不對,那麼你就能夠找到問題所在了。

還有就是,開發工具的控制台,都會提示出報錯信息的,現在的開發工具,都會直接告訴你哪一行,報了什麼錯。其實,很容易定位到錯誤的。你只需要在編程的過程中積累經驗,知道報什麼錯,用什麼方法來解決就行啦。

可是,提示的報錯信息,我不知道用什麼方法來解決的時候,該怎麼辦呢?這就是你需要積累的,也是問題中所描述的,就是通過搜索引擎來找答案。

不對,這里不應該是合理使用搜索引擎,應該是學會正確使用搜索引擎。比如:網路,你就不要用了,搜出一堆重復的信息,而且廣告也多。作為程序員,建議你使用谷歌搜索。

其實,你在編程中所遇到的幾乎所有的問題和 bug ,別人也同樣遇到過,因為不管是經驗豐富的老程序員,他技術再牛逼,也是初學者過來的,也都踩過你踩的坑。所以,互聯網是個好地方,裡麵包含了你想要的問題的答案。

你只要把報錯信息往搜索引擎上一放,回車一下,很多關於這個 bug 的答案就出來很多,你只需要找到跟你一樣的 bug ,就能找到答案了。

在這里必須提一下這個網站,所有的程序員有必要學會使用這個網站,其實,你編程中所遇到的問題,這個網站上幾乎都是由解答的。

Stack Overflow 可以說是最好的軟體程序類問答網站了,給軟體開發人員工作和學習提供了非常大的便利,以至於像小白,離了 Stack Overflow 簡直都不會寫程序了。

所以,建議大家一定要學會使用這個網站,對你編程肯定會有非常大的幫助的。

通過上面的方法,幾乎應該能夠解決到你所遇到的問題,但是,實在找不到答案的話,你可以問經驗比你豐富的老程序員,實在解決不了,那就換種方法吧!

網路,谷歌,debug,斷點調試,業務上的bug就需要問下同事或者產品。如果能知道大致范圍,哪一部分錯了,就換一種方法唄,一般都不會只有一種方法。

1.reload

2.restart

3.rewrite and then goto 2 or 4

4.reboot

5.rm -rf /

6.原諒我編不下去了[捂臉][捂臉][捂臉][捂臉][捂臉][捂臉][捂臉]

找bug跟醫生看病的思路是一樣的,要對症下葯。得先把問題的根源找到,找到根源以後問題就容易處理了。搜索引擎找不到的問題,說明這個問題不是一個常見的問題,具有獨特性,那麼從bug出現的路徑上一步一步去排查。必要時可以用排除法,盡可能的縮小排查范圍。另外,當軟體的業務邏輯比較繁多復雜的時候,一個結構清晰的架構能為你節省不少找bug的時間。還有,充分的單元測試能夠幫你減少出bug的機會。以上均為個人看法,歡迎討論!

一般程序員能碰到的bug無外乎其他上遊程序員寫庫時手抖留下些不匹配或者容易溢出的問題,搜一下差不多能解決問題。如果是自己寫的,那無非就是時序錯誤類型錯誤之類的,用break point一行行的調就好了。

再復雜點的bug就是程序員拿高薪的根本了,只可意會,不可言傳~

僅僅靠搜索引擎、其他網站那必然無法解決大量問題,因為很多問題是跟業務邏輯相關的,是沒有直接答案的。比如 游戲 開發有個界面一直無法顯示,這個問題就不是網路可以解決的。問題需要調試分析,這和破案非常像,但在開發過程中更有利的是問題有機會可以重現。破案是逆向工程,需要反推。解決代碼問題不僅僅可以反推,也可以通過閱讀代碼正向分析。下面說說如何debug一個業務邏輯問題。回到剛剛的例子,有個界面一直出不來,我們如何快速去定位:

1.思考這個問題發生的可能性。比如 游戲 內大量界面都是正常的,那麼可以對比正常界面代碼和異常界面代碼的區別,這是對比法。

2.假設創建正常界面和這個異常界面的邏輯代碼是一樣的,那麼問題就落到了這兩個界面內部,繼續在內部重復上面的對比法進行判斷,直到鎖定最終位置。

上面說的方法基本上可以杜絕卡在一個簡單問題上,這是擺脫新手的一個過程。選擇使用對比法或者其他方法的前提都是基於觀察和對項目的認識,所以,搜集「案發現場」是最關鍵的。

其他的問題,不屬於邏輯的,像其他網友說的那樣,有些通過到github、stackoverflow等地方解決的。這些問題也不是直接就去查找的,它通常也有個分析過程。比如你使用了一個庫,但是目前它不支持你的模塊。對於新手,就是直接網路或者google了。實際上這樣的問題也是有「案發現場」的。對於作者提供的api介面的統一性和便捷程度去推斷作者在相關支持模塊的位置以及命名以及拓展,再嘗試在文件夾中搜索。如果都找不到,再去Google上獲取更多的信息。重復推斷、分析,決定如何拓展或者繞過。

綜合上面的幾種問題,可以看到的是都離不開對現場的觀察和推理分析。這種能力也被稱為經驗。但是一般情況下你看不到它們這個分析過程,你能做的就是在實際環境中反復逼迫自己去思考,去訓練。這個推理的培養,不僅僅是對事情,也是對人。

我在入行 游戲 開發的前期,也是類似的情況。卡在不同種類的問題上,有些在簡單邏輯,有些在別人的代碼支持上。後面解決的問題多了,就會發現裡面共通的思維方式。常用的一些方法如下:

1.對比法,比較正常與異常代碼區別

2.二分查找法。分段注釋找問題,也會用在很多方面。比如最近版本突然出了一個奇怪bug,可以通過svn還原來定位。這個還原不是一個一個版本還原,而是用二分法去還原。

3.增加信息。在懷疑的位置或者過程添加日誌或者打斷點輔助自己更好的推理。

4.相似推理。比如一個引擎在api、性能使用程度上都非常友好,那麼它在別的地方也有可能相對表現比較好。這時候如果有個功能我們的實現需要很復雜才能完成,那麼就有可能是我們用錯了。相似推理不一定都能正確,但會提供一些幫助。

以上。

❸ 程序員格子襯衫什麼梗

這個梗的由來是:作為高收入人群的程序員對格子衫有著某種偏愛,周一到周日都穿格子衫,不僅他們愛穿,他們的同事也愛穿格子衫,因此就變成了一個梗。說到格子衫,我們就會聯想到程序員。

有網友是這么描述程序員的:「格子襯衫雙肩包,錢多話少禿頭早」。從這句話中可以看到四個標簽,格子襯衫、雙肩包、收入高、英年早禿。不過這可能是一個謠傳,雖然在一定領域內,審美可能會達到一定程度上的統一,但是並不是所有程序員都愛穿格子衫的。

之所以這能成為一個熱梗,可能是因為確實有很多程序員愛穿格子衫,這個梗火了以後,少數人的言論就壓不住這個「謠傳」了。

下面來分享一下,比較流行的對「程序員和對襯衫的偏愛」的解讀。

  1. 格子在程序員圈是一種圖騰,也是種祭祀,因為 Bug 音譯為「霸格」,所以把格子穿在身上能減少 Bug 數量。

  2. 有的程序員們以為這是公司的統一著裝,所以入職第一件事就是配一件格子衫。這就有點涉及到職場文化了。

  3. 格子襯衫很耐臟。不知道你有沒有一個喜歡給你買深色衣服的媽媽,如果有的話,也許你能明白為啥程序員愛穿格子。因為格子和深色一樣,都耐臟。

  4. 格子衫這種款式很多,適應的年齡段很廣的。格子襯衫的種類其實很多的,雖然在我們外行人眼裡,看著都差不多。適用年齡廣這一點,也不可否認,下至三歲萌娃,上至三十五歲程序員,都可以穿。(還有一個傳聞:很少有程序員能堅持到三十五歲,還干這份工作)


總結:人靠衣裳馬靠鞍,說白了衣服也不過是一個「門面」。有的時候內在比外在重要多了,穿的那麼光鮮亮麗幹嘛?會修復bug,能敲代碼不就很好了嗎?當然,我不是程序員,並不能體會到他們聽到網路上的熱梗,內心會是怎樣的感受。也許是一笑而過吧。(對,對,對,我們就是愛穿。)

❹ 程序員寫程序時,有哪些減少bug的好方法

深有體會,肺腑之言:


  1. 晚上10點之後千萬不要寫代碼,每次我這個時候寫代碼總會左眼睜著右眼閉上,右眼睜著左眼閉上,我表示10點之後寫代碼那是開玩笑。雖然有時後不是很困,然後自我感覺很良好,但是,但是,第二天自測,或者QA測試的時候那就呵呵。。。寫代碼5分鍾,查bug倆小時。

  2. 寫代碼前可以自言自語,或者寫在紙上。把要做的東西說一遍,理清楚了再寫。

  3. 寫代碼千萬不能著急。領導催,pm催,那也是急不來的。必須按照平時的速度,一步一步的來,心浮氣躁,心神不寧的狀態不能寫代碼。

  4. 寫注釋,寫注釋,寫注釋。重要的事情說三遍。代碼就像天書(這點相信看過別人代碼的人深有體會),而自己的代碼呢,當時覺得清新易懂,過個兩三天就不那麼回事了。寫上注釋有利於後續開發的時候容易減少bug和定位bug

  5. bug有很多種,語法上的,邏輯上的等等。對於語法錯誤,很好解決。使用集成的開發環境,一般都會有語法檢查,高亮提示等功能避免產生。然後



❺ 為什麼程序員一定就是禿頭這是什麼梗

天天不是在找BUG 就是在修BUG ,太費腦子 了,又經常加班,是個體力+腦力的活,所以容易禿頭

閱讀全文

與bug很少的程序員相關的資料

熱點內容
android定製輸入法 瀏覽:758
linux下編譯android 瀏覽:311
電影重建文件夾 瀏覽:981
第五人格香香解壓 瀏覽:626
我的世界手機版推薦什麼伺服器 瀏覽:706
安卓怎麼下載空戰 瀏覽:586
程序員賣房入市 瀏覽:117
android視頻播放窗口 瀏覽:288
17元特效的app名字叫什麼 瀏覽:838
小米手機什麼時候配置安卓 瀏覽:262
三種命令方塊 瀏覽:565
hp伺服器怎麼重新做系統 瀏覽:480
電腦與單片機無線 瀏覽:611
雲伺服器錢怎麼提現 瀏覽:878
華為運動app怎麼退出登錄 瀏覽:796
程序員那麼可愛陸漓金句 瀏覽:879
java如何將自己電腦設置成伺服器 瀏覽:859
域名怎麼制定伺服器8080埠 瀏覽:667
伺服器的主機如何使用 瀏覽:814
廣訊通伺服器地址怎麼填 瀏覽:665