程式設計師不是有一幅這樣的對聯嗎
上聯:乙個專案兩部電腦三餐盒飯只為四千工資搞得五臟俱損六神無主仍然七點起床八點開會處理九個漏洞十分辛苦;
下聯:十年編碼九年加班八面無光忙的七竅生煙到頭六親不認五體投地依舊四肢痠軟三更加班只為二個臭錢一生孤苦;
橫批:苦逼程式設計師。
其實,程式設計師職業生涯總結起來就這三件事情ⅰ理解需求 ⅱ編碼 ⅲ改bug。
可見,bug是程式設計師的天敵。bug對於我們自己名譽和產品自身質量影響是不言而喻的。哪麼,怎麼能夠降低bug了。
卡耐基說過,人性的弱點要克服。程式設計師必須克服一些自身的致命缺點才能夠從根本上解決這個問題。這個問題是什麼了?程式設計師對自己的**都非常寬容,認為那是正確的沒有問題。這種想法也是人之常情,畢竟程式是程式設計師經過縝密的思考和設計之後才寫出來,不會將錯誤的東西寫到**中去。但是人非聖賢孰能無過。實際上程式設計師在程式上是挑剔別人,寬容自己。這往往是最致命的。程式設計師必須對自己的**有一種「吹毛求疵」的態度,首先,大膽假設自己的**是錯誤的,需要證明自己的程式是正確的。這樣就需要做以下一系列的工作:仔細的設計(這個時候畫點時間是值得的,必須保證我們對自己的程式有清晰的輪廓後才能開始動手寫)、編寫**時、單元測試(單元測試的重要性就不在贅婿了)、功能測試。
仔細的設計:更多人願意稱之為詳細設計。這個的仔細是說在程式設計師編寫**之前,其必須對**的整個結構以及邏輯結構有明確的清晰的了解,只有這個時候才可以去寫**。這裡沒有談到文件,但我說到了一定要清晰的思路,但清晰的思路不是每個人都可以在腦袋中直接形成的,很多人都是普通人,沒有辦法在腦袋瓜中把所有問題都想清楚,那麼就記下來,特別對於複雜的邏輯。
編寫**:對於沒有把握的**,例如:新設計的演算法,最好保證其正確性。可以單獨將這部分測試,這就是我們所說的單元測試,我們公司要求每個新方法必須進行詳細設計。這可以讓**模組化的同時又保證了**的正確性。一句話:少量的**保證質量還是比較簡單的。
單元測試:單元測試的重要性不在贅敘了,現在也有許多任務具可以幫助程式設計師並減少工作量。android中android instrumention是不錯的選擇。
功能測試:程式設計師保證自己**質量的最後一關;為了做這樣的工作我們可能必須寫一些**來測試,甚至是測試工作。使用大量的 case 來測試,以及錯誤的 case 。這裡和測試人員的測試不同之處在於:仍然讓程式設計師的注意力放在其自己的**範圍內,減小了排錯的難度。
如果你通過了以上的步驟都找不出你程式中有任何問題的話,那麼我想你的程式應該足夠健壯了。其實還有一點必須說明的就是:** review 。
前面說道了程式設計師對待別人**的態度是挑剔和學習的態度,所以讓其他程式設計師來 review 你的**也是檢查程式有沒有邏輯錯誤的很好的辦法。團隊中應該交叉 review **,這是實踐的經驗。
作為乙個好的程式設計師必須有以上的習慣,以及對待自己**象孩子一樣,我們要愛惜我們的**,同時也要讓**走正確的路。
以上的方法,是防患於必然的方法。哪麼怎麼解決bug了。
程式設計師八榮八恥說道:
以日誌除錯為榮,以單步除錯為恥。
控制項除錯bug首先列印日誌,最後迫不得已再單步除錯了。
這就是我的bug全攻略,希望對大家有所幫助。
戰鬥bug技巧全攻略
程式設計師不是有一幅這樣的對聯嗎 上聯 乙個專案兩部電腦三餐盒飯只為四千工資搞得五臟俱損六神無主仍然七點起床八點開會處理九個漏洞十分辛苦 下聯 十年編碼九年加班八面無光忙的七竅生煙到頭六親不認五體投地依舊四肢痠軟三更加班只為二個臭錢一生孤苦 橫批 苦逼程式設計師。其實,程式設計師職業生涯總結起來就這...
測試全攻略
include class1.h include include cppunit testrunner.h include cppunit testresult.h include cppunit testresultcollector.h include cppunit extensions he...
Ubuntu 藍芽全攻略
ubuntu 的藍芽支援相信很多同學都在使用吧,插上就用,連個手機傳個檔案啊什麼的非常方便。但是你有沒有想過壓榨出其更大的潛能呢?有沒有想過坐到電腦前,開啟藍 牙連上手機,戴上耳麥,直接就通過電腦來接打 了呢?或者連上你的 ipod touch,聲就從電腦的音箱中飄出了呢?當然,windows 系統...