close

寫程式難免會有錯誤,邏輯錯誤也好,打錯字也罷,時常連已經上市的程式也沒有辦法完全除錯,而我們這篇就是要來討論,Bug & Debug。

 

避免生成Bug

Bug隨處都可產生,但我們只要養成好習慣,我們是可以避免許多Bug的。

第一個,最為基礎也最常被忽略的就是"輸入法",通常是採用半形英數模式,半形英數模式是電腦最開始發明時所採用的輸入法,也是各大晶片、儀器皆可顯示的語言,而且我要強調,一定要半形!

筆者這邊有著小經驗,曾經有某友人的程式Bug就是在排版的時候使用全形空白鍵,在地毯式除錯法(後面會介紹)找到錯誤段落後,遲遲找不到哪裡有錯誤,整整花了一天才找出來...

第二個,隨時隨地的註解,註解有兩種,一種是整段整段的函式功能說明;另一種是單行單行的指令說明,在你所有的程式語法後面加上註解也許工程皓大,但後續維修上能節省的時間絕對是有其記錄價值的,而當一份程式完,畢竟閱讀註解絕對比死板的程式碼還要快速許多。當發生邏輯錯誤時,你可以快速的像看故事一樣瀏覽程式碼,把錯誤掌握在股掌之間,用最簡單明瞭的方式指出愚昧的自我沒有發現的黑洞。

 

最後,養成重複閱讀的好習慣,打完一整段程式碼後回頭觀望一下,人類的腦袋很神奇,吃飯前後的想法會完全不一樣(這不失個debug的好方法),對於撰寫中的人來說,中斷去做其他事情時常會讓程式有不連續的現象,避免虎頭蛇尾。

 

Debug - 是美夢也是噩夢

當你的老闆不了解你的詳細內容時,拿Debug假裝認真一下是美夢,但是當上頭的大爺清楚你孩子(程式)的底細時,就是一場噩夢了。

Debug的第一步就是學習看錯誤碼,先看懂你的debuger告訴你的訊息,通常這可以解決40%的問題,如果你的debuger像跳針一樣瘋狂報錯,通常是少了括弧之類的符號,讓整個判定有誤 (這個步驟就能解除的,是好bug)。

Debug的第二步,就是比對修改前後的差異,上次是好的這次是壞的,那有90%的機會是修改中出現錯誤 (不耐)。

Debug的第三步,如果來到這步,通常都是麻煩的Bug,把部分程式碼移除->重新執行->觀察錯誤,直到找出錯誤的片段為止 (微崩潰)。

Debug最後一步,來到這,這程式八成已經嚴重崩壞,我們唯一能做的就是把不必要的功能關閉,開啟某功能->觀察執行結果->重複測試 (然後就是令人超崩潰的過程)。

簡單說,絕大部分的程式都有初版、再版、地板、天花板,各種版本都有,有時候接手別人的還好好的,動一下就天崩地裂(所以備份舊版本很重要),最重要的學習是如何快速的找到有問題的觀念或者片段,才是身為活體Debuger的價值。

 

但,有經驗的人都知道,Debuger能找出來的都不算甚麼,一個已經交給客戶的程式發生崩潰,才是讓人髮指的,最慘在這裡?不是,最慘的是客戶只跟你說"程式崩潰",完全不知從何下手(工程師們也完全不知道怎麼死的...)。

 

最後,就是debug的最高境界,防患於未然。

一個完整的程式,除了功能之外,還需要抓到的錯誤並回報,如果你的功力夠高,甚至可以"跳過"這個錯誤,讓成是繼續執行(但還是要回報啦XD),比方說相除,就必須檢查除數是否為零,動動你的大腦,有個什麼萬一,你的程式該如何應對,因此我們需要幫成是建立免疫系統,寫程式就像養孩子,除教他如何吃喝拉撒外,也必須教他如何抵禦外敵,一般來說,某部分的錯誤是可以容忍的,一般的程式都是運行至上,生病沒關係,開開藥改個版,下次就可以避免,所以如何線上出錯時Debug,就是更深的一層學問了。

arrow
arrow
    全站熱搜

    Vincent 發表在 痞客邦 留言(0) 人氣()