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