明明只是增加了兩行代碼,為什么卻花了整整兩天的時(shí)間?
這個(gè)問題看似合理,但其背后隱藏著一些可怕的假設(shè):
- 代碼行數(shù)=工作量
- 代碼行數(shù)=價(jià)值
- 所有代碼行都一樣
但這些統(tǒng)統(tǒng)不屬實(shí)。
有人花了整整兩天的時(shí)間改好了代碼,但為什么我們回頭去看的時(shí)候會(huì)覺得這些改動(dòng)如此簡單?
(推薦教程:python教程)
因?yàn)閱栴}報(bào)告對(duì)如何再現(xiàn)的描述非常模糊。
我花了好幾個(gè)小時(shí)才成功地重現(xiàn)了問題。有些開發(fā)人員會(huì)立即去找報(bào)告問題的人,在獲得更多信息之后再展開調(diào)查。而我會(huì)盡力使用已提供的信息。我知道有些開發(fā)人員不喜歡改bug
,因此他們會(huì)想法設(shè)法逃避這種工作。聲稱信息量不足是及時(shí)甩鍋的一個(gè)好辦法,看起來你像是在努力幫忙,但又無需做任何工作。我知道報(bào)告錯(cuò)誤非常困難,我非常感謝那些報(bào)告錯(cuò)誤的人。我會(huì)盡可能利用已有信息,實(shí)在沒辦法再去請(qǐng)求報(bào)告錯(cuò)誤的人提供更多信息,目的是為了表達(dá)對(duì)他們的感謝。
因?yàn)閳?bào)告的問題與某個(gè)功能有關(guān),但我不熟悉這個(gè)功能。
我很少使用與這個(gè)問題相關(guān)的功能,而且我并沒有接觸過與該功能相關(guān)的具體細(xì)節(jié)。因此,我花費(fèi)了很長時(shí)間來理解如何使用這個(gè)功能,以及這個(gè)bug與軟件交互的具體過程。
因?yàn)槲一撕荛L時(shí)間調(diào)查引發(fā)問題的真正原因,而不僅僅是流于表面。
如果某些代碼拋出了錯(cuò)誤,則你只需把它包裝在try..catch
語句中即可抑制錯(cuò)誤。沒有錯(cuò)誤,就沒有問題。對(duì)嗎?不好意思,在我看來,把問題藏起來并不等同于解決問題。掩蓋錯(cuò)誤很容易引發(fā)其他意料之外的副作用。我不想留到將來,再與它們打交道。
因?yàn)槲艺{(diào)查了除了問題報(bào)告的步驟之外,是否還有其他方法可以再現(xiàn)這個(gè)問題。
通過一組再現(xiàn)步驟可以很容易地讓錯(cuò)誤浮現(xiàn),但實(shí)際上它可能涉及更深層的問題。找到問題的確切原因,并研究解決問題的所有方法,才能提供有價(jià)值的見解。比如代碼的實(shí)際使用方式,可能其他地方存在有待解決的問題,或者存在代碼不一致,導(dǎo)致某個(gè)代碼路徑中引發(fā)了錯(cuò)誤,而其他路徑則不會(huì)。
因?yàn)槲一〞r(shí)間驗(yàn)證了代碼的其他部分是否會(huì)受到類似問題的影響。
如果某個(gè)錯(cuò)誤引發(fā)了這個(gè)bug
,那么代碼庫的其他地方可能也存在相同的錯(cuò)誤。我可以借這個(gè)機(jī)會(huì)仔細(xì)檢查一下。
(推薦課程:JavaScript教程)
因?yàn)槿绻艺页隽藛栴}的根源,那么就可以尋求最簡單的解決方法,同時(shí)引入副作用的風(fēng)險(xiǎn)也很小。
我不希望用最快捷的方法修復(fù)問題。我希望修復(fù)這個(gè)問題之后將來不會(huì)引起混亂或引發(fā)其他問題。
因?yàn)槲覍?duì)此次代碼變更進(jìn)行了徹底的測(cè)試,并驗(yàn)證了它能夠解決所有受影響代碼路徑下的問題。
我不想依靠他人來測(cè)試我做的更改是否正確。我不希望以后等到我完全忘記此次更改之后再發(fā)現(xiàn)某個(gè)bug
,迫使我不得不再次回頭看這些代碼。來回切換思維費(fèi)時(shí)費(fèi)力,又令人沮喪。我不希望讓專職的測(cè)試人員再來檢驗(yàn)同一個(gè)更改。
我不喜歡改bug
的工作,部分原因是因?yàn)檫@種工作讓人感覺是我之前的失誤造成的。而我不喜歡改bug
的另一個(gè)原因是,我更喜歡從事新的工作。
問:有什么是比改bug更糟糕的工作呢? 答:反復(fù)修復(fù)同一個(gè)bug。
我愿意花時(shí)間確保每次遇到的bug
都會(huì)被完全修復(fù),這樣我就無需再面對(duì)這個(gè)bug
,也無需再花時(shí)間調(diào)查、修復(fù)并測(cè)試這個(gè)bug
。
以上就是關(guān)于為什么有時(shí)候明明只增加了一點(diǎn)點(diǎn)代碼,卻花費(fèi)了好幾天時(shí)間的相關(guān)介紹了,希望對(duì)大家有所幫助。
原文:www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html
參考來源:blog.csdn.net/csdnnews/article/details/107903206