在程序員的職業(yè)生涯中,免不了要跟bug一直打交道。Bug也是程序員進階的磨刀石。如果是處女座的程序員,遇到bug會非常興奮,樂此不疲去折騰,乃至解決bug;當(dāng)然,bug還是大部分程序員的噩夢。
在修改bug上經(jīng)常會存在這么一些問題。
一、面對bug的一些態(tài)度
先來說一下軟件行業(yè)的一些公司,他們經(jīng)常會讓一個人修補另一個人代碼里的BUG。在這種情況下,一些程序員完全可以一氣呵成書寫了一段代碼,之后就可以把問題拋給其他工程師。
但是,這樣就會出現(xiàn)另一種尷尬的情況。由于每個人的代碼技巧和風(fēng)格不一樣,讓一個人修復(fù)另一個人的BUG工作效率相當(dāng)?shù)?。另一方面,搞得另一位程序員很沒面子!何況對于技術(shù)高一點的程序員來說,修改越是糟糕的代碼,越痛苦!在他們的看來,倒不如重寫代碼。
其次,一些程序員面對bug也會出現(xiàn)消極的態(tài)度:測試人員是不是針對我?我真的適合做程序員嗎?這好像不是我的bug!
具備職業(yè)修養(yǎng)的程序員,面對bug的正確姿勢應(yīng)該是:調(diào)試代碼,單元測試,聯(lián)合調(diào)試,集成測試,確認問題所在,進一步找出問題的原因,然后再修改代碼,驗證修改后的代碼。
二、如何解決Bug?
1、二分法定位
這也是比較常規(guī)的方法,即把程序邏輯一點點注釋掉,看看還會不會出問題,類似二分查找的方法,逐步縮小問題范圍。
2、單步調(diào)試
由于代碼邏輯錯誤,經(jīng)常會出現(xiàn)輸出結(jié)果與預(yù)期不符。解決此類問題最好的方法就是利用單步調(diào)試,即設(shè)定每一步代碼的預(yù)期結(jié)果,然后跟蹤判斷實際結(jié)果是否與預(yù)期結(jié)果一致,找到不一致的原因!在開發(fā)環(huán)境無法重現(xiàn),無法單步調(diào)試的,就可以運用添加輸出日志的方式判斷哪一步的問題。
3、重寫一遍
大部分的bug,其實都是 typo。你可以用必殺技,重寫一下代碼!
而對于兼有管理職責(zé)的程序員來說,遇到手下的bug,不用解釋,不用推敲,等他們自己把程序改好,或者實在沒辦法,再來向你解釋他們的思想!