天天看點

解決bug的一些總結

        今天我們就來說說,程式員的日常工作之一解bug,解bug時間與正常編碼時間幾乎都快符合二八法則了,當然是bug占八了。

        接下來筆者會圍繞bug産生的原因,各種類型的bug修複方案,以及如何必免大部分bug的産生,來一探bug的真面目,希望能對您有所幫助。

        首先我們來看一下,都有哪些原因會産生bug呢?以筆者經驗來看,可能有如下幾條:

         **1.業務需求沒搞清楚,這種是典型的邏輯bug,不符合基本的業務邏輯。

         2.沒考慮邊界條件,或完全沒處理邊界條件。

         3.馬虎大意,如等号寫成了指派,少個逗号,變量引用錯誤等等。

         4.第三方庫的bug。

         5.編碼不一緻引起的亂碼。

         6.ui沒有自适應,引起文字超出或布局錯亂

        7.改了他人遺留代碼。

        8.自己覺得可能是個bug。

        9.如果是手機應用還有螢幕适配問題等等**

      簡單介紹完bug産生的原因,接下來說一說不同情況下bug的修複方法:

       斷點調試法:這種是比較常見的修複方法,在代碼适當的位置加上斷點,按步看執行邏輯,找出原因。一般适用于重制步驟明确,必然出現的bug。

       版本比對法:一般是切換到最後一次穩定版本,和剛産生bug的那個版本做比對,看前後代碼有什麼不同之處。這種适用于在穩定版本上改出來的bug,時間緊迫,調試較慢,或重制步驟不明确等情況。    

        列印輸出法:和斷點類似,隻不過是斷點變成了輸出列印,可以輸出到控制台,控制台不友善看的也可以輸出到檔案或螢幕。這種省去了啟動調試模式的步驟,适用情況和斷點調試類似。

        删代碼法:删去部分代碼運作觀察,一般會找到關鍵的一行,然後對該行分析,查找原因。此法多見于調試或看代碼邏輯沒發現問題時。

        假設法:根據bug的表象,假設bug産生的條件,并通過編寫假設代碼,人為重制出來,并盡一步分析原因。這種适用于偶現,重制步驟不明确,但又比較嚴重而不能忽略的bug。

      直接讀代碼:就是直接逐行讀相關代碼,仔細分析問題所在,雖然這個方法效率比較低,但有時面對一個不容易重制的bug,還是很有效的。

       忽略法:顧名思義就是直接無視,适用于非常不容易重制,不影響系統正常運作的bug,但選擇忽略之前一定要仔細分析定位,反複确認,不然忽略可能會埋下隐患。

         更改需求法:有些bug可能是某些條件或需求沒考慮,後期測試覆寫了此種情況,這種情況下,可以做些溝通看是否可以更改下需求,以消除bug。

      說了原因和方案後,筆者覺的,其實大部分bug是可以避免的,因為大部分bug是馬虎和溝通不善引起的,關于這個問題筆者會專門寫篇關于bug産生原因和避免的文章。敬請關注!!

繼續閱讀