強(qiáng)中自有強(qiáng)中手 調(diào)試高手和編程高手[1]
業(yè)界總是有高手之說,高手成了程序員心中之偶像,成了程序員成長之目標(biāo)。但是,現(xiàn)實中人們往往對自己所了解的程序員,很難認(rèn)同為高手;人們反而對那些自己不了解的,甚至是道聽途說的人會認(rèn)作為高手了。高手,同武林高手一樣,神秘之至。
許多程序員都有這樣的經(jīng)歷:無論自己編寫什么很短很短的程序,一般是很難一次就能通過編譯的;通過編譯的其功能還不一定是正確的。我在很早就注意這樣現(xiàn)象了,開始的時候,我還不信這個邪,還試著編寫程序看看自己能否一次能否編譯成功,為這個事還和別人打過賭呢!這當(dāng)然是年輕時做過的事了。后來我漸漸明白了,編程出錯是編程的一個重要的部分!出錯是正常的.,不出錯才是不正常的。出錯怎么辦?當(dāng)然是改錯啦!不知道錯在什么地方怎么辦?當(dāng)然是調(diào)試?yán)!調(diào)試于是和編程相依相伴了。程序員不但要會編寫程序,還要會調(diào)試程序。
程序出錯一般有:未定義、語法、運(yùn)行出錯三個方面。
1、 未定義
未定義往往是程序員的忽略定義或定義后名稱與定義不一致造成的。
1) 要避免忽略定義這個問題,程序員首先要養(yǎng)成嚴(yán)謹(jǐn)工作的習(xí)慣:“先定義,后使用”。
2) 解決定義名字與使用名字不一致問題,程序員在對函數(shù)名、變量名、文件名、數(shù)據(jù)庫名、表名、字段名定義的時候,不要信手拈來,象不花錢似的任意取名。一定要定下心來慢慢地斟酌,這個名字自己不但要能懂能記得,別人一看也要能懂能記得。程序員可以假設(shè)自己定義一個變量就要花出去100元錢,如果別人看不懂就要另外支付200元。有了這種名字的“有償使用”,這樣程序員就不可能亂取名了。長此以往,在使用這些名字的時候程序員就會有行云流水感覺,而且很少出錯。
2、 語法問題
1) 新手編程走一步一個跟頭,走兩步兩個跟頭,主要是對語言的語法不熟悉,丟三拉四,關(guān)鍵字拚錯等。這種情況不可怕,多看看語法說明,多改改程序就會對語法越來越熟悉了。
2) 老程序員語法問題出現(xiàn)較少。但是,很多情況下程序員在使用新語言編程序的時候,會采用老語言的語法,反之亦然,導(dǎo)致出錯。例如,某人先使用C語言,后使用VFP.當(dāng)用VFP編程的時候,往往習(xí)慣性地在語句后面加上“;”,這導(dǎo)致VFP語法出錯。當(dāng)熟悉VFP后,再編寫C語言的時候,往往在語句后面忘記加上“;”,導(dǎo)致C語言語法出錯。類似常見問題如:IF語句后面表達(dá)式是否要加“()”等,for 語句,while 語句,case語句在不同的語言的語法都有可能不同。另外,不同數(shù)據(jù)庫中的SELECT 、INSERT、語法都有一些不同處,這些不同之處,往往讓程序員不知所措,老是要停下來思考一下,現(xiàn)在用的是什么語言用的是什么語法。
3、 運(yùn)行問題
定義、語法這些都是顯式出錯,相對好解決。但是運(yùn)行中出現(xiàn)錯誤就五花八門了,我試著歸納一下:
1) 運(yùn)行中程序突然中斷了并退出了。
往往是內(nèi)存出錯!可查變量、指針是否越界,指針是否為空等、例外沒有處理。
2) 環(huán)境問題
例如,數(shù)據(jù)庫密碼錯導(dǎo)致數(shù)據(jù)庫打開不了、要打開的文件不存在、參數(shù)定義錯,參數(shù)表為空,參數(shù)表沒有缺省值等。
3) 程序的輸出的不是自己的預(yù)期結(jié)果
往往是程序邏輯和算法存在問題。
4) 程序不停地運(yùn)行沒有停止的跡象
查一下循環(huán)的條件表達(dá)式是否永真、導(dǎo)致死循環(huán)。
5) 程序無法退出
程序亂了,導(dǎo)致內(nèi)存錯,覆蓋了退出指令!
6) 程序運(yùn)行了很長時間才出現(xiàn)了錯誤
累計誤差、數(shù)據(jù)原因造成的錯誤等。
出錯是必然的,如何找出錯誤,有些人編寫C語言的人只會用在可能出錯的語言前后,通過顯示語句print來判別出錯的原因。他們不懂debug、sdb、dbx等調(diào)試工具,來調(diào)試程序,他們會編不會調(diào)。我們很難想象不會調(diào)試的程序員是如何編程的,調(diào)試對于程序員如此重要,以致于可導(dǎo)致出“不會調(diào)試的程序員就不是程序員”的結(jié)論。
【強(qiáng)中自有強(qiáng)中手 調(diào)試高手和編程高手[1]】相關(guān)文章:
情場高手還是職場高手的心理測試09-06
你是情場高手還是職場高手呢09-03
高手寫簡歷08-08
創(chuàng)業(yè)營銷高手06-28
高手是怎么說話的-高手的說話方法08-08
高手的說話技巧10-05
高手的說話方式10-04
如何成為圍棋高手09-07
高爾夫高手推桿技巧09-14
如何成為高爾夫高手09-06