1,為什么容易忽略編譯器的警告信息? 1)編程時(shí)處理各種error已經(jīng)很讓人惱火的了,error自然被放在次要位置; 2)絕大多數(shù)下,程序在存在warnings的情況下,在短期內(nèi)可以正常運(yùn)行,我們根本看不到錯(cuò)誤,導(dǎo)致warning近一步被輕視; 3)沒(méi)有養(yǎng)成好的工作習(xí)慣,帶有warning的代碼是不能交付的,而我們判斷交付的標(biāo)準(zhǔn)中往往沒(méi)有對(duì)代碼提出更為細(xì)致的要求。 2,忽視編譯警告往往會(huì)給我們?cè)斐芍卮髶p失 最近的一個(gè)項(xiàng)目中,我的程序在實(shí)驗(yàn)室測(cè)試了1個(gè)星期沒(méi)有出現(xiàn)問(wèn)題。當(dāng)設(shè)備部署到現(xiàn)場(chǎng)3天后,壞事情終于發(fā)生了:設(shè)備依次出現(xiàn)死機(jī)問(wèn)題。 再?gòu)念^分析代碼, 百思不得其解,痛不欲生的時(shí)候注意到了一個(gè)編譯警告,說(shuō)一個(gè)表達(dá)式一直為真。原來(lái)發(fā)生了下面的錯(cuò)誤: unsigned char i; for( i = 0; i < 1000; i++) {.....} 變量類型的定義導(dǎo)致了表達(dá)式一直為真。為什么開始的測(cè)試中不會(huì)出現(xiàn)問(wèn)題哪?原來(lái),這段代碼是必須程序運(yùn)行一段時(shí)間后才會(huì)執(zhí)行的一段代碼,在短時(shí)間的測(cè)試中根本不會(huì)進(jìn)入。 看來(lái)編程真不能偷懶,偷懶必遭懲罰,你還要費(fèi)比當(dāng)時(shí)偷懶省的勁多好多倍的勁來(lái)彌補(bǔ),并且這個(gè)彌補(bǔ)的過(guò)程中你還要承受巨大的壓力。跟平時(shí)多流汗戰(zhàn)時(shí)少流血的道理一樣的。 3)解決辦法 給自己的編程增加一個(gè)規(guī)則,帶有編譯警告的代碼不能交付。 |
|
來(lái)自: wangguang939 > 《編程技術(shù)》