天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

高效代碼審查的十個經(jīng)驗

  代碼審查(Code Review)是軟件開發(fā)中常用的手段,和QA測試相比,它更容易發(fā)現(xiàn)和架構(gòu)以及時序相關(guān)等較難發(fā)現(xiàn)的問題,還可以幫助團隊成員提高編程技能,統(tǒng)一編程風(fēng)格等。

  1. 代碼審查要求團隊有良好的文化

  團隊需要認(rèn)識到代碼審查是為了提高整個團隊的能力,而不是針對個體設(shè)置的檢查“關(guān)卡”。

  “A的代碼有個bug被B發(fā)現(xiàn),所以A能力不行,B能力更好”,這一類的陷阱很容易被擴散從而影響團隊內(nèi)部的協(xié)作,因此需要避免。

  另外,代碼審查本身可以提高開發(fā)者的能力,讓其從自身犯過的錯誤中學(xué)習(xí),從他人的思路中學(xué)習(xí)。如果開發(fā)者對這個流程有抵觸或者反感,這個目的就達(dá)不到。

  2. 謹(jǐn)慎的使用審查中問題的發(fā)現(xiàn)率作為考評標(biāo)準(zhǔn)

  在代碼審查中如果發(fā)現(xiàn)問題,對于問題的發(fā)現(xiàn)者來說這是好事,應(yīng)該予以鼓勵。但對于被發(fā)現(xiàn)者,我們不主張使用這個方式予以懲罰。軟件開發(fā)中bug在所難免,過度苛求本身有悖常理。更糟的是,如果造成參與者怕承擔(dān)責(zé)任,不愿意在審查中指出問題,代碼審查就沒有任何的價值和意義。

  3. 控制每次審查的代碼數(shù)量

  根據(jù)smartbear在思科所作的調(diào)查,每次審查200行-400行的代碼效果最好。每次試圖審查的代碼過多,發(fā)現(xiàn)問題的能力就會下降,具體的比例關(guān)系如下圖所示:

  我們在實踐中發(fā)現(xiàn),隨著開發(fā)平臺和開發(fā)語言的不同,最優(yōu)的代碼審查量有所不同。但是限制每次審查的數(shù)量確實非常必要,因為這個過程是高強度的腦力密集型活動。時間一長,代碼在審查者眼里只是字母,無任何邏輯聯(lián)系,自然不會有太多的產(chǎn)出。

  4. 帶著問題去進(jìn)行審查

  我們在每次代碼審查中,要求審查者利用自身的經(jīng)驗先思考可能會碰到的問題,然后通過審查工作驗證這些問題是否已經(jīng)解決。一個竅門是,從用戶可見的功能出發(fā),假設(shè)一個比較復(fù)雜的使用場景,在代碼閱讀中驗證這個使用場景是否能夠正確工作。

  使用這個技巧,可以讓審查者有代入感,真正的沉浸入代碼中,提高效率。大家都知道看武俠小說不容易瞌睡,而看專業(yè)書容易瞌睡,原因就是武俠小說更容易產(chǎn)生代入感。

  有的研究建議每次樹立目標(biāo),控制單位時間內(nèi)審核的代碼數(shù)量。這個方法在我們的實踐中顯得很機械和流程化,不如上面的方法效果好。

  5. 所有的問題和修改,必須由原作者進(jìn)行確認(rèn)

  如果在審查中發(fā)現(xiàn)問題,務(wù)必由原作者進(jìn)行確認(rèn)。

  這樣做有兩個目的:

  (1) 確認(rèn)問題確實存在,保證問題被解決。

  (2) 讓原作者了解問題和不足,幫助其成長。

  有些時候為了追求效率,有經(jīng)驗的審查者更傾向于直接修改代碼乃至重構(gòu)所有代碼,但這樣不利于提高團隊效率,并且會增加因為重構(gòu)引入新bug的幾率,通常情況下我們不予鼓勵。

  6. 利用代碼審查激活個體“能動性"

  即使項目進(jìn)度比較緊張,無法完全的進(jìn)行代碼審查,至少也要進(jìn)行部分代碼的審查,此時隨即抽取一些關(guān)鍵部分是個不錯的辦法。

  背后的邏輯是,軟件開發(fā)是非常有創(chuàng)造性的工作,開發(fā)者都有強烈的自我驅(qū)動性和自我實現(xiàn)的要求。讓開發(fā)者知道他寫的任何代碼都可能被其他人閱讀和審察,可以促使開發(fā)者集中注意力,尤其是避免將質(zhì)量糟糕,乃至有低級錯誤的代碼提交給同伴審查。開源軟件也很好的利用了這種心態(tài)來提高代碼質(zhì)量。

  7. 在非正式,輕松的環(huán)境下進(jìn)行代碼審查

  如前所述,代碼審查是一個腦力密集型的工作。參與者需要在比較輕松的環(huán)境下進(jìn)行該工作。因此,我們認(rèn)為像某些實踐中建議的那樣,以會議的形式進(jìn)行代碼審查效果并不好,不僅因為長時間的會議容易讓效率低下,更因為會議上可能出現(xiàn)的爭議和思考不利于進(jìn)行如此復(fù)雜的工作。

  8. 提交代碼前自我審查,添加對代碼的說明

  所有團隊成員在提交代碼給其他成員審查前,必須先進(jìn)行一次審查。這次自我修正形式的審查除了檢查代碼的正確性以外,還可以完成如下的工作:

  (1) 對代碼添加注釋,說明本次修改背后的原因,方便其他人進(jìn)行審查。

  (2) 修正編碼風(fēng)格,尤其是一些關(guān)鍵數(shù)據(jù)結(jié)構(gòu)和方法的命名,提高代碼的可讀性。

  (3) 從全局審視設(shè)計,是否完整的考慮了所有情景。在實現(xiàn)之前做的設(shè)計如果存在考慮不周的情況,這個階段可以很好的進(jìn)行補救。

  我們在實踐中發(fā)現(xiàn),即使只有原作者進(jìn)行代碼審查,仍然可以很好的提高代碼質(zhì)量。

  9. 實現(xiàn)中記錄筆記可以很好的提高問題發(fā)現(xiàn)率

  成員在編碼的時候應(yīng)做隨手記錄,包括在代碼中用注釋的方式表示,或者記錄簡單的個人文檔,這樣做有幾個好處:

  (1) 避免遺漏。在編碼時將考慮到的任何問題都記錄下來,在審查階段再次檢查這些問題都確認(rèn)解決。

  (2) 根據(jù)研究,每個人都習(xí)慣犯一些重復(fù)性的錯誤。這類問題在編碼是記錄下來,可以在審查的時候用作檢查的依據(jù)。

  (3) 在反復(fù)記錄筆記并在審查中發(fā)現(xiàn)類似的問題后,該類問題出現(xiàn)率會顯著下降

  10. 使用好的工具進(jìn)行輕量級的代碼審查

  “工欲善其事,必先利其器”。我們使用的是bitbucket提供的代碼托管服務(wù)。

  每個團隊成員獨立開發(fā)功能,然后利用Pull Request的形式將代碼提交給審查者。復(fù)審者可以很方便在網(wǎng)頁上閱讀代碼,添加評論等,然后原作者會自動收到郵件提醒,對審閱的意見進(jìn)行討論。

  即使團隊成員分布在天南海北,利用bitbucket提供的工具也能很好的進(jìn)行代碼審查。

it知識庫高效代碼審查的十個經(jīng)驗,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 久久久久99精品成人片三人毛片 | A级毛片高清免费网站不卡 a级毛片高清免费视频 | 极品少妇伦理一区二区 | 国产精品久久欧美一区 | 久久免费看少妇级毛片蜜臀 | 亚洲综合久久一本伊伊区 | 江苏电台在线收听 | 国产老肥熟xxxx | 影音先锋男人av橹橹色 | 一区二区三区无码被窝影院 | 欧美精品一区二区蜜臀亚洲 | 青青草 久久久 | 国产精品AV无码免费播放 | 嫩草影院在线观看精品视频 | 99热这里有精品 | 国产高清亚洲日韩字幕一区 | 四虎国产精品永久一区高清 | 不用播放器的黄 | 99热在线精品免费全部my | 二级毛片免费观看全程 | 亚洲欧美日本久久综合网站 | 乱亲女H秽乱长久久久 | 欧美xxx性| 一点色成人 | 日本熟妇乱人伦A片精品软件 | 精品视频在线观看视频免费视频 | bbbbbxxxxx肥胖 | 欧美乱码卡一卡二卡四卡免费 | 青柠电影在线看 | 欧美人xxxxx| 一个人的视频在线观看免费观看 | 一线高清视频在线播放 | 4399亚洲AV无码V无码网站 | 国产在线一区观看 | xxxx88| 老湿机一区午夜精品免费福利 | 亚洲第一天堂无码专区 | 九九视频在线观看视频6 | 99视频精品国产在线视频 | 国产精品JIZZ在线观看A片 | 两个奶被男人揉了一个晚上 |