自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

你只修改了2行代碼,為什么需要兩天時(shí)間?

開(kāi)發(fā) 前端
我不喜歡修 bug,部分原因是會(huì)讓人覺(jué)得是我之前的代碼質(zhì)量不好造成的。我不喜歡修 bug,另一個(gè)原因是我更愿意去研究新的東西。

[[334710]]

“你只修改了2行代碼,為什么需要兩天?”

這是程序員最常碰到的質(zhì)問(wèn),表面看這是一個(gè)非常合理的問(wèn)題,但它做了一些不合適的假設(shè):

  • 代碼行數(shù) = 努力
  • 代碼行數(shù) = 價(jià)值
  • 每一行代碼價(jià)值都相同

所幸上面這些斷言都不是真的。

一個(gè)簡(jiǎn)單的修復(fù),為什么需要花兩天時(shí)間?下面列舉了一些常見(jiàn)原因。

  • 因?yàn)槿绾沃噩F(xiàn)問(wèn)題的描述很模糊。程序員可能需要花幾個(gè)小時(shí)才能重現(xiàn) bug。有些開(kāi)發(fā)人員會(huì)立即聯(lián)系報(bào)告 bug 的用戶,要求提供更多的信息再進(jìn)行分析。有些程序員會(huì)試著用提供的信息做盡可能多的事情。我知道有些開(kāi)發(fā)者不喜歡修復(fù) bug,所以會(huì)不惜一切代價(jià)來(lái)擺脫困境,聲稱問(wèn)題不能重現(xiàn)是一種非常好的逃避方式,它讓你看起來(lái)很想解決問(wèn)題,但又不需要真的動(dòng)手。我知道用戶報(bào)告 bug 不容易,我也很感謝這樣做的用戶。我想通過(guò)在打擾用戶詢問(wèn)更多細(xì)節(jié)之前,盡量多地使用所提供的信息來(lái)表達(dá)對(duì)報(bào)告 bug 用戶的感謝。
  • 因?yàn)閳?bào)告的問(wèn)題與特定功能有關(guān),但程序員不熟悉這塊功能。這塊代碼不是他開(kāi)發(fā)的,以前也比較少接觸。如果去修的話,需要花費(fèi)更長(zhǎng)的時(shí)間來(lái)先了解這塊的流程,以及這個(gè)問(wèn)題怎么出現(xiàn)。
  • 因?yàn)榛ㄙM(fèi)了時(shí)間去分析問(wèn)題的真正原因,而不僅僅是看表面現(xiàn)象。如果一些代碼拋出了錯(cuò)誤,你可以直接用 try...catch 語(yǔ)句把它包起來(lái),吞下錯(cuò)誤。這樣錯(cuò)誤就不見(jiàn)了,對(duì)吧?抱歉,對(duì)我來(lái)說(shuō),把問(wèn)題掩蓋不等于解決問(wèn)題。"吞下"一個(gè)錯(cuò)誤,很容易導(dǎo)致其他意想不到的副作用。我不希望在未來(lái)某個(gè)時(shí)間點(diǎn)上不得不來(lái)處理它。
  • 因?yàn)槲曳治隽耸欠裼衅渌椒梢灾噩F(xiàn)這個(gè)問(wèn)題,而不僅僅局限于報(bào)告提出的重現(xiàn)步驟。某一套重現(xiàn)步驟,容易讓錯(cuò)誤出現(xiàn)在某個(gè)地方,但實(shí)際上可能是更深層次的原因?qū)е隆U业絾?wèn)題的確切原因,并查看所有到達(dá)那里的方法,可以得到更有價(jià)值的意見(jiàn)。諸如代碼實(shí)際是如何使用的,其他地方可能也有需要解決的問(wèn)題,或者它可能由于代碼中的使用不一致,這意味著錯(cuò)誤是只在一個(gè)代碼路徑中引起,但不會(huì)在另一個(gè)出現(xiàn)。
  • 因?yàn)槲一藭r(shí)間來(lái)驗(yàn)證代碼中是否有其他部分可能受到類似的影響。如果一個(gè)錯(cuò)誤導(dǎo)致了 bug,那么同樣的錯(cuò)誤也可能在代碼庫(kù)的其他地方發(fā)生,現(xiàn)在是檢查這個(gè)問(wèn)題的最好時(shí)機(jī)。
  • 因?yàn)楫?dāng)我找到問(wèn)題的原因時(shí),我會(huì)尋找最簡(jiǎn)單的方法來(lái)修復(fù),并將引入副作用的風(fēng)險(xiǎn)降到最低。我不想要最快速的修復(fù)方法,我需要一個(gè)不會(huì)在未來(lái)帶來(lái)混亂或引入其他問(wèn)題的修復(fù)方法。
  • 因?yàn)槲覐氐椎販y(cè)試了這個(gè)變更,并驗(yàn)證了受影響的不同代碼路徑的各種情況。我不想依靠別人來(lái)測(cè)試我修改的代碼是否正確。我不想將來(lái)某一天又出現(xiàn)一個(gè) bug,在我已經(jīng)淡忘這個(gè)的時(shí)候,還要回到這段代碼中來(lái)。上下文切換是昂貴的,而且很糟心。讓一個(gè)專門的測(cè)試人員不得不再次查看同一個(gè)問(wèn)題的變更,是我想盡可能避免的。

我不喜歡修 bug,部分原因是會(huì)讓人覺(jué)得是我之前的代碼質(zhì)量不好造成的。我不喜歡修 bug,另一個(gè)原因是我更愿意去研究新的東西。

有什么比修 bug 更糟心的事情?那就是反復(fù)修復(fù)同一個(gè) bug。

我花了更長(zhǎng)時(shí)間,是需要確保任何一次遇到的 bug 都被完全修復(fù),這樣就不需要再次去面對(duì)這個(gè) bug、再次分析原因、修復(fù)和測(cè)試。

英文原文:

https://www.mrlacey.com/2020/07/youve-only-added-two-lines-why-did-that.html

 本文轉(zhuǎn)載自微信公眾號(hào)「 高可用架構(gòu)」,可以通過(guò)以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系 高可用架構(gòu)公眾號(hào)。

 

責(zé)任編輯:武曉燕 來(lái)源: 高可用架構(gòu)
相關(guān)推薦

2020-08-24 15:49:28

代碼bug出錯(cuò)

2023-02-17 18:00:06

AI應(yīng)用前端

2019-12-10 14:35:40

Web 開(kāi)發(fā)代碼

2021-06-08 08:52:18

Makefile編譯c 文件

2024-12-13 13:58:53

2018-10-15 09:20:08

代碼軟件工程師

2014-04-25 10:05:42

OpenStack私有云公共云

2020-04-29 15:30:22

CSP網(wǎng)頁(yè)前端

2022-03-28 10:44:51

MySQL日志存儲(chǔ)

2020-08-03 09:05:48

代碼程序員案例

2023-01-01 13:51:06

模型算力

2024-02-21 21:28:29

Linux系統(tǒng)

2021-11-12 08:00:00

抽象開(kāi)發(fā)代碼

2018-07-03 15:46:35

數(shù)據(jù)集訓(xùn)練模型

2020-02-25 17:04:05

數(shù)據(jù)庫(kù)云原生分布式

2020-11-17 08:30:06

LinuxSwapping 設(shè)計(jì)

2023-09-14 13:23:42

Llama-2模型參數(shù)

2017-01-03 15:38:08

Android

2014-12-19 09:59:50

代碼

2013-12-10 10:27:04

密碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)