1.CodeReview最終的作用
- 促進(jìn)工程師日常代碼交流
- 人員成長
- 作為輔助手段對(duì)產(chǎn)品質(zhì)量進(jìn)行把關(guān)宣赔。
另一種作用:
- 檢查有沒有比較嚴(yán)重的錯(cuò)誤
- 統(tǒng)一團(tuán)隊(duì)內(nèi)的代碼風(fēng)格
- 該模塊的原作者可以提出改進(jìn)意見
- 找個(gè)出了問題的時(shí)候可以一起背鍋的人
2.適合的團(tuán)隊(duì)
- 技術(shù)驅(qū)動(dòng)型團(tuán)隊(duì):一般涉及系統(tǒng)底層邏輯較多泣刹,功能路徑難以被測試覆蓋稿辙,而產(chǎn)品質(zhì)量問題很多時(shí)候是致命的饼丘,所以這樣的團(tuán)隊(duì)更多需要開發(fā)編碼的嚴(yán)謹(jǐn)性和相關(guān)代碼質(zhì)量的保證活動(dòng)纤勒。手機(jī)管家高權(quán)限應(yīng)用組就屬于這一類型拟蜻。
- 公共服務(wù)型團(tuán)隊(duì):一般服務(wù)于多個(gè)團(tuán)隊(duì)糙俗,一旦出現(xiàn)質(zhì)量問題影響范圍會(huì)比較廣历造,所以除了在測試方面加以把關(guān)外垃瞧,通過CodeReview活動(dòng)來提升開發(fā)質(zhì)量是非常有必要的蔫劣。
- 測試缺失型團(tuán)隊(duì):這樣的團(tuán)隊(duì)由于缺乏測試環(huán)節(jié),質(zhì)量問題帶到線上的風(fēng)險(xiǎn)會(huì)很高个从,強(qiáng)烈建議在開發(fā)環(huán)節(jié)做好自檢工作脉幢。
- 新人密集型團(tuán)隊(duì):新人的代碼可讀性往往是比較差的,特別需要組織能及時(shí)給予糾正嗦锐,幫助新人養(yǎng)成良好的編碼習(xí)慣嫌松。同時(shí)如果團(tuán)隊(duì)產(chǎn)出的代碼可讀性較高時(shí),新人也可以更快上手工作奕污。
- 任何有主觀意愿的團(tuán)隊(duì):這樣的團(tuán)隊(duì)或領(lǐng)導(dǎo)者認(rèn)同CodeReview的意義萎羔,或團(tuán)隊(duì)成員對(duì)代碼質(zhì)量提升有追求。
3.不適合的團(tuán)隊(duì)
- 不認(rèn)同型團(tuán)隊(duì):即領(lǐng)導(dǎo)和團(tuán)隊(duì)骨干都不認(rèn)同CodeReview意義的團(tuán)隊(duì)碳默,這樣的團(tuán)隊(duì)無論從推動(dòng)還是堅(jiān)持上都有很大挑戰(zhàn)贾陷。
- 疲于應(yīng)付型團(tuán)隊(duì):這種團(tuán)隊(duì)一般沒有建立必要的持續(xù)提升機(jī)制缘眶,每天淹沒在各種需求溝通實(shí)現(xiàn)變更和優(yōu)化中,自然髓废,代碼質(zhì)量提升活動(dòng)也很難被列入backlog巷懈。
- 創(chuàng)新型團(tuán)隊(duì):這種團(tuán)隊(duì)的重要任務(wù)是要把產(chǎn)品快速推向市場進(jìn)行價(jià)值驗(yàn)證,所以在代碼編寫上要求足夠敏捷瓦哎,代碼暫時(shí)的混亂完全可以接受砸喻。
4.開展必備四要素
- 代碼規(guī)范:明確Coding規(guī)則
- 檢視指南:消除困惑和迷茫
- 總結(jié)優(yōu)化:透明問題,持續(xù)優(yōu)化(非常重要)
- 激勵(lì)機(jī)制:激發(fā)主觀能動(dòng)性
5.CodeReview方式
- 強(qiáng)制&非強(qiáng)制: 按照經(jīng)驗(yàn)蒋譬,CodeReview啟動(dòng)前期建議采用強(qiáng)制要求割岛,否則很難有效開展起來。堅(jiān)持一段時(shí)間待習(xí)慣養(yǎng)成后再考慮自由度犯助。
- 小片段&大模塊:如果想要讓問題暴露更充分或降低review的難度癣漆,建議采用細(xì)粒度方式進(jìn)行,即小片段提交小片段review剂买。如果更關(guān)注全局設(shè)計(jì)和邏輯思路的學(xué)習(xí)和找茬惠爽,那么可以用模塊方式統(tǒng)一review。但很多時(shí)候這兩種方式是可以結(jié)合運(yùn)作的瞬哼。
- 線上交流&線下會(huì)議: 如果想提高效率婚肆,建議采用線上方式進(jìn)行交流,這里要推薦公司的Code平臺(tái)坐慰,上面支持CodeReview的功能都已經(jīng)比較齊全较性。如果更喜歡全員一起找茬的那種快感,那么可以采用線下會(huì)議方式開展结胀,但采用開會(huì)的方式赞咙,一般成本較高,可看團(tuán)隊(duì)接受度糟港。
- 事前&事后:這里指的是發(fā)布前還是發(fā)布后攀操。版本發(fā)布后統(tǒng)一進(jìn)行CodeReview的方式更多是一種代碼交流活動(dòng), 起不到代碼質(zhì)量把關(guān)的作用秸抚。反之速和,如果在版本發(fā)布前就對(duì)代碼進(jìn)行CodeReview,就可以對(duì)質(zhì)量問題起到很好的把關(guān)作用剥汤。這里是時(shí)間和質(zhì)量之間的權(quán)衡健芭。
- 高頻率&低頻率:筆者建議的是把代碼交流放在每一天,所以頻率越高越好秀姐。具體根據(jù)團(tuán)隊(duì)實(shí)際情況進(jìn)行安排即可慈迈。
- 此外,也有團(tuán)隊(duì)采用模塊owner把關(guān)質(zhì)量的CodeReview方式,這種更多是從質(zhì)量風(fēng)險(xiǎn)規(guī)避角度上考慮痒留,在代碼提交前owner檢查是否有質(zhì)量問題谴麦,確認(rèn)沒有問題后方能發(fā)布,有這方面需要的團(tuán)隊(duì)也可以考慮這種方式伸头。最后組合一下匾效,筆者個(gè)人推薦的CodeReview方式是強(qiáng)制+事前+小片段+線上交流+高頻率,同時(shí)恤磷,如果能結(jié)合線下的大模塊方式開展代碼交流活動(dòng)面哼,效果會(huì)更好,這個(gè)經(jīng)驗(yàn)來自手機(jī)管家高權(quán)限應(yīng)用組的接地氣實(shí)踐扫步。
引用:大家的公司的 Code Review 都是怎么做的魔策?遇到過哪些問題?
參考:程序員必備的代碼審查(Code Review)清單