你不就是加了 2 行代码,为什么要用 2 天?
英文:Matt Lacey,
翻譯:程序員的那些事(id:iProgrammer)
“你只是加了 2 行代碼,為什么要用 2 天?”
這是一個看似合理的問題,但做了一些可怕的假設。
代碼行數 = 努力 代碼行數 = 價值; 所有代碼都有同等價值;上述 3 個假設都有誤。
為什么 1 個看起來很簡單的修改,要花 2 ?天時間才能完成?
我們來分析一下原因:
1、因為提交這個問題報告的人,并沒有清晰描述如何重現問題。
我花了幾個小時才重現了。有些開發者會立即回到報告問題的人那里,要求他提供更多的信息,然后再進行調查。我試著用提供的信息做盡可能多的事情。我知道有些開發者不喜歡必須修復 bug,所以會不惜一切代價來“逃避”。聲稱沒有足夠的信息是一種“好方法”,看起來你是想幫忙,但不需要做任何事情。報告錯誤不是一件容易事,我很感謝所有提錯誤報告的人。在向他們詢問更多細節之前,我會盡量先從已提供的信息來開展工作。
2、因為報告的問題與 XX 功能有關,是我不熟悉的。
問題所涉及的功能,我很少用,也不是我曾仔細用過的。這就意味著我得花了更多的時間去理解這個功能,以及它是如何與整個軟件相互作用的。
3、因為我花了時間去調查問題的真正原因,而不僅是看表面癥狀。(治本,不止治標)
如果一些代碼拋出了錯誤,你可以直接用 try...catch 語句把它包起來,然后抑制錯誤。沒有錯誤,就沒有問題。對吧?抱歉,對我來說,讓問題隱形不等于解決問題。隱藏錯誤容易導致其他意想不到的隱患。我不希望在將來還得返工處理。
4、因為我調查了是否有其他方式可以引發同樣的問題,而不僅僅是重現報告的步驟。
重現步驟是很容易讓復現錯誤,而實際上可能是更深層次的錯誤原因。找到問題的確切原因,并查看所有引發問題的方法,更能提供有價值的見解。比如代碼實際是如何使用的,哪些地方可能有需要解決的問題,或者反映出代碼不一致,這意味著錯誤是在一個代碼路徑 A 中導致的(或處理的),而不是在路徑 B 中。
5、因為我花了時間來驗證代碼中是否有其他部分可能受到類似的影響。
如果一個錯誤導致了 Bug,那么代碼庫的其他地方發生也可能有同樣的錯誤。現在是檢查的好時機。
6、因為我發現問題原因后,我就開始尋找最簡單的方法來解決問題,同時將帶來副作用的風險降到最低。
我不想要最快速的修復方法。我想要一個未來不會造成混亂或其他問題的修復方法。
7、因為我做了更徹底的測試,并驗證了它解決了所有受影響的不同代碼路徑的問題。
我不想依靠別人來檢驗我所做的是正確的。我不希望在將來發現錯誤,不得不回到這段代碼。場景切換既代價昂貴又令人沮喪。我希望盡可能避免讓專職的測試人員再次查看“相同的”更改。
我不喜歡必須修復 bug。部分原因是 Bug 會讓人覺得是我之前的失敗造成的。另一個原因是我更愿意去研究新的東西。
還有什么比修 bug 更慘的呢?
就是反復修同一個 bug。
我花時間確保任何一次遇到的 bug 都能完全修復,這樣就不需要不止一次的面對、調查、修復和測試。
由于微信平臺算法改版,公號內容將不再以時間排序展示,如果大家想第一時間看到我們的推送,強烈建議星標我們和給我們多點點【在看】。星標具體步驟為:(1)點擊頁面最上方“小詹學Python”,進入公眾號主頁。 (2)點擊右上角的小點點,在彈出頁面點擊“設為星標”,就可以啦。 感謝支持,比心。總結
以上是生活随笔為你收集整理的你不就是加了 2 行代码,为什么要用 2 天?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 可怕!公司部署了一个东西,悄悄盯着你··
- 下一篇: 那么多MarkDown编辑器,最专业的还