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