成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

拒絕修復(fù) bug 的幾個(gè)正當(dāng)理由

移動(dòng)開(kāi)發(fā)
這是非常常見(jiàn)的情景:在某個(gè)地方做了修改之后,單元測(cè)試在其它地方失敗了。bug 被修復(fù)了,但是一些可能不相關(guān)的單元測(cè)試開(kāi)始報(bào)告失敗。由于壓力或僅僅因?yàn)槲覀兊膽卸瑁覀儧](méi)有修復(fù)它們;我們只是刪除了測(cè)試、或?qū)⑺鼈儤?biāo)注為臨時(shí)的「跳過(guò)」。問(wèn)題被解決了,構(gòu)建是干凈的,那么合并該補(bǔ)丁,收工,對(duì)嗎?錯(cuò)!

當(dāng)某些功能沒(méi)有按預(yù)期運(yùn)行時(shí),bug 就出現(xiàn)了。一次 bug 修復(fù)基本上是給現(xiàn)有代碼打一個(gè)補(bǔ)丁,它應(yīng)該解決當(dāng)前問(wèn)題,以確保「該功能」按預(yù)期運(yùn)行。可是,這個(gè)補(bǔ)丁修復(fù)了一個(gè)地方,卻常常破壞了很多地方。我相信有必要時(shí)不時(shí)地拒絕 bug 修復(fù),并要求其作者重新制作補(bǔ)丁,以保護(hù)項(xiàng)目避免遭受更大的問(wèn)題。根據(jù)我的經(jīng)驗(yàn),對(duì)于這種拒絕,存在著一些正當(dāng)理由。

[[142609]]

《***犯罪(El Crimen Perfecto)》,導(dǎo)演:Alex de la Iglesia

它降低了代碼覆蓋率

這是非常常見(jiàn)的情景:在某個(gè)地方做了修改之后,單元測(cè)試在其它地方失敗了。bug 被修復(fù)了,但是一些可能不相關(guān)的單元測(cè)試開(kāi)始報(bào)告失敗。由于壓力或僅僅因?yàn)槲覀兊膽卸瑁覀儧](méi)有修復(fù)它們;我們只是刪除了測(cè)試、或?qū)⑺鼈儤?biāo)注為臨時(shí)的「跳過(guò)」。問(wèn)題被解決了,構(gòu)建是干凈的,那么合并該補(bǔ)丁,收工,對(duì)嗎?錯(cuò)!

即使我喜歡盡可能的偷工減料,但是對(duì)于這種問(wèn)題,我不推薦你那樣做。

單元測(cè)試的存在恰恰是為了防止我們?cè)诿媾R壓力時(shí)去破壞代碼。

很明顯,存在著一些情景,比如單元測(cè)試錯(cuò)了,我們不得不刪除它們。對(duì)于這種情況,記得要?jiǎng)?chuàng)建新的單元測(cè)試。

還有一些情景,比如 bug 必須盡快修復(fù),保證系統(tǒng)線上運(yùn)行,而修復(fù)所有單元測(cè)試將花費(fèi) 1 個(gè)小時(shí)。這種情況強(qiáng)烈預(yù)示著,你已經(jīng)處于一種可怕的潛在情景,那就是產(chǎn)品中的測(cè)試覆蓋率。毫無(wú)疑問(wèn),我們不得不做出修復(fù),并在一段時(shí)間后讓測(cè)試通過(guò)。但是,對(duì)于這種情況,要確保團(tuán)隊(duì)在修復(fù)該 bug 之后的下一個(gè)任務(wù)就是糾正那些不好使的單元測(cè)試。我推薦閱讀 Michael Feathers 編寫的《修改代碼的藝術(shù)》,本書為該主題提供了正解。

 

 

Michael Feathers 編寫的《修改代碼的藝術(shù)》

它不會(huì)重現(xiàn)問(wèn)題

有時(shí)候整個(gè)系統(tǒng)掛掉,僅僅是因?yàn)槟承写a里的一個(gè)小拼寫錯(cuò)誤。明顯的 bug 修復(fù)就是刪除這個(gè)拼寫錯(cuò)誤,如果我們關(guān)心項(xiàng)目質(zhì)量,這就不是項(xiàng)目期望我們做的操作。問(wèn)題不在于拼寫錯(cuò)誤,而在于缺乏單元測(cè)試,單元測(cè)試在部署階段是可以捕捉到這個(gè)錯(cuò)誤的。

真正問(wèn)題在于,測(cè)試代碼覆蓋率在代碼的這個(gè)部分是缺失的。單純地刪除拼寫錯(cuò)誤,無(wú)助于整個(gè)項(xiàng)目。而且,我們?cè)趥λ?mdash;—我們正在掩蓋真正的問(wèn)題。

不管問(wèn)題多么小、不管其表現(xiàn)形式是多么地迷惑人,bug 修復(fù)必須包含可以首先重現(xiàn)該 bug 的額外測(cè)試。沒(méi)有這樣的測(cè)試,所謂的 bug 修復(fù)只是在浪費(fèi)項(xiàng)目的金錢。

進(jìn)一步講,沒(méi)有重現(xiàn)問(wèn)題的單元測(cè)試,就無(wú)法保證 bug 修復(fù)不會(huì)帶來(lái)更多的 bug。我甚至敢說(shuō),我們的 bug 修復(fù)越多,引起的熵【注1】就越高。減少這種不確定性的唯一方式就是用單元測(cè)試覆蓋代碼。沒(méi)有測(cè)試,bug 修復(fù)將給代碼庫(kù)帶來(lái)更多的無(wú)序。

它太大了

bug 修復(fù)不是功能;它們必須小而專注。在修復(fù) bug 時(shí),引入了某些重構(gòu),這是程序員自我陶醉時(shí)經(jīng)常要犯的錯(cuò)誤。結(jié)果,補(bǔ)丁大得難以理解。我不是反對(duì)重構(gòu);重構(gòu)對(duì)于項(xiàng)目非常重要,屬于積極的舉動(dòng),但要在 bug 被修復(fù)、合并之后,專門來(lái)做重構(gòu)。

請(qǐng)?jiān)谛迯?fù) bug 的時(shí)候,不要重構(gòu)代碼!

創(chuàng)建一個(gè)新的單元測(cè)試,重現(xiàn) bug,并提交。在現(xiàn)有的代碼庫(kù)里修復(fù) bug,不管它是多么丑陋。創(chuàng)建新 bug,要求團(tuán)隊(duì)改善丑陋代碼庫(kù)的狀況。如果感興趣,就把這些 bug 分配給你自己。或許其他人只是對(duì)修復(fù)它們以及重構(gòu)代碼感興趣。不過(guò)所有這些都會(huì)在其它的 pull request 里發(fā)生,也帶著新的代碼審查和新的合并。

修復(fù)那些糟糕的代碼,和懶惰、不愿意沒(méi)有關(guān)系。這是一項(xiàng)紀(jì)律,比良好意圖更加重要。

它不只解決一個(gè)問(wèn)題

每次總是修復(fù)一個(gè)問(wèn)題——就這么簡(jiǎn)單,沒(méi)有例外。當(dāng)一個(gè) bug 修復(fù)的補(bǔ)丁包含了修復(fù)多個(gè)問(wèn)題的代碼修改時(shí),就很難理解哪個(gè)問(wèn)題被測(cè)試到了,哪個(gè)是可重現(xiàn)的、以及它們彼此有何關(guān)聯(lián)。把多個(gè) bug 修復(fù)整合到一次 pull request 是一種非常糟糕的實(shí)踐。

不管這次修復(fù)多么簡(jiǎn)單,要確保它和其它修復(fù)分開(kāi)。逐個(gè)審查代碼、測(cè)試以及合并。這也增加了追溯代碼修改的便利性,很容易理解誰(shuí)做的此次修復(fù)、誰(shuí)審查的代碼、以及什么時(shí)候被合并(和部署)。

責(zé)任編輯:chenqingxiang 來(lái)源: 臘八粥
相關(guān)推薦

2015-07-29 09:12:15

拒絕修復(fù)bug

2019-11-12 14:40:25

工信部攜號(hào)轉(zhuǎn)網(wǎng)電信業(yè)務(wù)

2013-11-18 09:06:26

2009-11-19 10:01:34

Office2010發(fā)

2021-09-13 11:53:40

工信部網(wǎng)址屏蔽合法網(wǎng)址

2012-05-02 09:42:19

開(kāi)發(fā)者技術(shù)博客

2011-11-15 10:59:33

虛擬化VMware WorkGUI

2012-12-21 15:28:16

服務(wù)器升級(jí)服務(wù)器老化關(guān)鍵業(yè)務(wù)

2022-05-26 12:43:33

canal中間件

2010-01-05 14:45:08

FileZilla 3修復(fù)bug

2009-03-08 19:14:51

2018-08-06 11:59:00

混合云數(shù)據(jù)中心上云

2015-09-24 10:31:58

蘋果公測(cè)iOS9.1

2013-08-12 09:45:06

最佳編程方法編程方法編程

2013-05-02 09:31:02

虛擬化服務(wù)器

2010-06-13 15:46:41

Grub Rescue

2013-05-29 10:58:28

移動(dòng)開(kāi)發(fā)者Node.js信息圖

2013-12-17 10:22:20

2016-12-01 13:22:05

歐盟700MHz頻段5G

2018-02-02 08:35:12

Windows 10原始版升級(jí)
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 成人免费激情视频 | 亚洲毛片在线 | 国产高清一区二区三区 | 国产精品视频免费看 | 欧美视频免费在线观看 | 成人免费观看男女羞羞视频 | 欧美综合一区 | 中文字幕亚洲一区 | 国产精品久久久久久一区二区三区 | 精品伦精品一区二区三区视频 | 激情毛片 | 久久久一区二区三区四区 | 亚洲色图50p | 一区二区av | 国产视频日韩 | 国产精品1区2区 | 精一区二区 | 色婷婷久久久久swag精品 | 男人天堂网址 | cao在线| 亚洲一区二区三区在线播放 | 麻豆成人在线视频 | 免费国产视频在线观看 | 99reav| 久久久精品网 | 国产在线一级片 | 最新中文字幕一区 | 91精品国产91久久久久久最新 | 丝袜毛片 | 久久久久国产一区二区三区四区 | 国产精品视频免费观看 | 一区二区精品视频 | 欧美精品一区二区三区在线播放 | 中文字幕日韩欧美一区二区三区 | 亚洲欧洲精品成人久久奇米网 | 一区二区三区精品视频 | 亚洲少妇综合网 | 一二三四av| 国产成人精品av | 一区二区三区不卡视频 | 欧美日产国产成人免费图片 |