編程的好習(xí)慣
當(dāng)前位置:點晴教程→知識管理交流
→『 技術(shù)文檔交流 』
調(diào)試能否成功一方面在于方法,另外很大程度上取決于個人的經(jīng)驗。但在調(diào)試時,通常應(yīng)該遵循一些原則。
1、確定錯誤的性質(zhì)和位置的原則 分析、思考與錯誤征兆有關(guān)的信息,避開死胡同。調(diào)試工具只是一種輔助手段。利用調(diào)試工具可以幫助思考,但不能代替思考。通常避免使用試探法,最多只能將它當(dāng)作最后手段,畢竟小概率事件有時也會發(fā)生。 2、修改錯誤的原則 在出現(xiàn)錯誤的地方,很可能還有別的錯誤。修改錯誤的一個常見失誤是只修改了這個錯誤的征兆或這個錯誤的表現(xiàn),而沒有修改錯誤本身。小心修正一個錯誤的同時又引入新的錯誤。 有效減少調(diào)試時間 1、繪制程序流程圖 一些程序員認(rèn)為,繪制程序流程圖是件瑣碎的事,而且浪費時間。其實不然,當(dāng)其他人對著諾大的程序一籌莫展時,面對紛紜復(fù)雜的關(guān)系理不出頭緒時,使用程序流程圖絕對可以事半功倍。因此,建議在編寫程序前先繪制程序流程圖,這樣變成的思路有條理,調(diào)試時同樣會有條不紊。若編寫程序之前沒有繪制流程圖,當(dāng)排錯沒有進展時,可以馬上編寫流程圖。你會發(fā)現(xiàn),程序中某些分支或細(xì)節(jié)被忽略了,這些細(xì)節(jié)可能就是程序出錯的地方。 2、不要過多依賴單步調(diào)試 尤其在調(diào)試串口程序或調(diào)試一些對時間要求比較高的程序時,數(shù)據(jù)只在一瞬間有效,可謂稍縱即逝。所以等到單步執(zhí)行到那里時,數(shù)據(jù)早已更改了,當(dāng)然調(diào)試也就不會得到什么有意義的結(jié)果了。 3、變量的定義 變量名一定要有意義,而且同一個程序中,同一個變量名只讓它做一件事。不要為了節(jié)省空間,一“物”多用。現(xiàn)在的計算機內(nèi)存足夠大,多幾個變量不會對程序的性能有本質(zhì)的影響。 4、程序的結(jié)構(gòu) 合理地設(shè)計程序結(jié)構(gòu)。在面向?qū)ο蟮某绦蛟O(shè)計中,將相關(guān)的功能做成一個成員函數(shù),盡量降低各成員函數(shù)間的耦合性。其實,在過程化程序設(shè)計中,就是代碼模塊化的表現(xiàn)。 5、修改代碼的原則 在程序徹底正常運行前,決不要輕易刪除一段代碼,即使當(dāng)時認(rèn)為這段代碼肯定時錯的?,F(xiàn)在的集成開發(fā)環(huán)境都提供了注釋工具,將暫時認(rèn)為錯誤的代碼注釋掉要優(yōu)于直接刪除。若同一段代碼修改多次,還應(yīng)該在代碼后面注明修改的時間及修改的原因,這些信息在后續(xù)的調(diào)試中會給你帶來幫助。 6、檢查循環(huán)語句 循環(huán)語句經(jīng)常是造成程序沒有任何響應(yīng)的罪魁禍?zhǔn)?。詳?xì)檢查程序中使用的每一個循環(huán)語句,尤其是while()循環(huán)語句。 7、與外部設(shè)備打交道 程序中,當(dāng)操作文件、打開串口時,一定要編寫出錯的代碼。因為這些硬件設(shè)備隨時、隨機都有可能不滿足編寫程序時的條件。 8、數(shù)組下標(biāo)和循環(huán)的上下限 為簡化程序的編寫,對于大量的、有規(guī)律的數(shù)據(jù)處理,通常都會選擇采用數(shù)組和循環(huán)來實現(xiàn)。那么,要小心了,設(shè)置的數(shù)組下標(biāo)是否滿足實際數(shù)據(jù)需要,循環(huán)的上下限是否漏掉了數(shù)據(jù)的兩個端點值。 9、屏蔽無關(guān)的代碼 當(dāng)調(diào)試某個功能的代碼時,為縮小查找范圍,可以注釋掉與其無關(guān)的其他代碼,或者注釋掉該段代碼的某個分支,這樣會加快找到問題的根源。 繪制程序流程圖、變量的定義并且加相應(yīng)的代碼注釋,這是一個很好的習(xí)慣。起初,開始寫些程序時,變量名隨便使用,并沒有做相應(yīng)的注釋,在其他同事查看代碼時,不厭其煩的來問我,這些代碼是實現(xiàn)什么功能,那些代碼又是起著什么作用,而因為當(dāng)時沒有做相應(yīng)的注釋,加上時間過了很長后,自己看起來也費勁。所以養(yǎng)成好的編程習(xí)慣,這樣方便自己后來再次閱讀時候,快速讀懂,也方便他人迅速讀懂程序。 該文章在 2010/2/1 22:24:14 編輯過 |
相關(guān)文章
正在查詢... |