新聞中心
作者 | 蓋邁達(dá)

目前成都創(chuàng)新互聯(lián)公司已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、夏縣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
高效地進(jìn)行 Code Review 一直是我們想要做的事情,如何持續(xù)保持高效 Review 也是我們?nèi)粘i_發(fā)中所亟需解決的問題。
在疫情爆發(fā)之前,團(tuán)隊(duì)大多是線下一起辦公。大家會聚在一起 Code Review,把討論出的反饋記錄在便利貼并貼在白板上。而當(dāng)遠(yuǎn)程、線上的同事越來越多后,我們選擇將 Code Review 的反饋記錄在 Trello 等電子看板上。
今天我們總結(jié)了一種比較高效的 Code Review 方案,并帶來了一個比較好用的工具。下面來和大家分享一下我們團(tuán)隊(duì) Code Review 實(shí)踐的歷程。
Code Review的好處
一直以來,人們都說 Code Reivew 作為敏捷開發(fā)中重要的一環(huán),實(shí)踐 Code Review 有很多益處,那么到底 Code Review 有什么益處呢? 到底是因?yàn)槭裁茨Я?,我們這么篤定每天去做 Code Review?
我們認(rèn)真地思考了 Code Review 的益處,認(rèn)為以下幾點(diǎn)在整個敏捷開發(fā)流程中起到了至關(guān)重要的作用。
互相學(xué)習(xí),知識共享
我們無法保證項(xiàng)目中每個人都擁有相同的知識儲備,而且對于同一個問題,不同的人有不同的解決方案。通過 Code Review 我們可以快速地、有重點(diǎn)地將自己的知識傳遞給其他人。其他人也可以將代碼上下文、知識以及更好的解決方案提供給我們,讓我們做出更優(yōu)的實(shí)現(xiàn)。
Code Review 可以讓業(yè)務(wù)上下文在團(tuán)隊(duì)中共享。日常工作中,開發(fā)人員只會對自己負(fù)責(zé)的這塊業(yè)務(wù)比較熟悉。通過 Code Review 的方式,我們可以快速了解到其他業(yè)務(wù)上下文,更好地了解業(yè)務(wù)知識,讓每位同學(xué)對系統(tǒng)都有更全面的認(rèn)識。
統(tǒng)一風(fēng)格,提高代碼質(zhì)量
團(tuán)隊(duì)一般會有統(tǒng)一的代碼規(guī)范。有些規(guī)范可以借助工具掃描來實(shí)現(xiàn)統(tǒng)一,工具掃描不到的就要靠 Code Review 來統(tǒng)一規(guī)范。
莎士比亞說過:“一千個人眼里有一千個哈姆雷特”,針對同一段代碼可能多種實(shí)現(xiàn)都是可行的。如果沒有統(tǒng)一的風(fēng)格,不便于后續(xù)對代碼的維護(hù)。通過 Code Review 的方式,我們可以在團(tuán)隊(duì)內(nèi)達(dá)成共識,形成統(tǒng)一的代碼規(guī)范,為后續(xù)開發(fā)提供標(biāo)準(zhǔn),讓代碼看起來是同一個人寫的。
盡早暴露問題,降低修復(fù)成本
代碼開發(fā)過程中,我們很容易陷入到自己所預(yù)定的 Happy Path 中,反復(fù)驗(yàn)證卻無法發(fā)現(xiàn)問題。通過 Code Review 我們可以借助他人的視角來審查自己的代碼。是復(fù)制的時候變量名忘記了修改,還是忘記了測試異常情況,或是理解錯業(yè)務(wù)含義等等。代碼從寫完到 Review 的時間間隔越短,解決問題的成本越低。和測試左移類似,Code Review 也可以將問題左移,從而盡早暴露,盡早修復(fù)。
我們團(tuán)隊(duì)的 Code Review 實(shí)踐經(jīng)歷
談了 Code Review 這么多好處,那么如何實(shí)踐 Code Review 呢?下面我們將自己團(tuán)隊(duì) Code Review 的經(jīng)驗(yàn)分享出來,與大家共同思考 Code Review 的最佳實(shí)踐:
團(tuán)隊(duì)最初采用的 Code Review 方式是,每位開發(fā)分別講解自己的代碼。這種方式的好處是同一個功能的代碼能夠集中講解。但實(shí)施一段時間后發(fā)現(xiàn)超時嚴(yán)重,主要原因如下:
- 講代碼的節(jié)奏不好把控。有人講得慢,導(dǎo)致嚴(yán)重超時。
- 遠(yuǎn)程辦公,不同講解人切換成本高。可能會遇到屏幕共享、聲音等設(shè)備問題。
由此引發(fā)下面的問題:
- 每天只能 review 2、3個人的代碼
- 有的開發(fā)人員不夠主動,很久才會輪到TA
- Review 的代碼有遺漏
為了解決上面的問題,我們將 Code Review 改為如下形式:
- 每天一位主持人帶團(tuán)隊(duì) Code Review
- 選擇當(dāng)天所有的提交記錄,一起 Review
- 主持人驅(qū)動 Code Review,做簡單講解
- 復(fù)雜代碼,提交人講解
- 主持人通過工具記錄 Code Review 的問題
這種方式主持人把控節(jié)奏,并且沒有了切換成本,大大加快了 Code Review 的速度。而且每天每個人的提交都能被 review 到。此外,借助 Code Review 問題記錄工具,效率大幅提升。
我們認(rèn)為通過主持人驅(qū)動的方式能夠更加高效地進(jìn)行 Code Review,所以將其采納為我們團(tuán)隊(duì)的 Code Review 最佳實(shí)踐。
但 Code Review 中手動記錄問題的過程非常煩瑣:發(fā)現(xiàn)問題 -> 切換Trello -> 手動建卡 -> 手動記錄問題代碼的位置。在此期間,我們開發(fā)了一款基于 JetBrains 平臺 (比如 Intellij IDEA、WebStorm) 的 Code Review 插件(在IDE的插件市場搜索 Thoughtworks Code Review Tools 即可體驗(yàn))。我們在后文中將會詳細(xì)介紹此插件。
Thoughtworks Code Review Tools 介紹
這個 Code Review 工具可以幫我們:
- 創(chuàng)建 Code Review 反饋 卡片并指定 owner
- 卡片會自動記錄代碼位置
- 添加反饋卡片的類型(標(biāo)簽)
- 增加卡片截止時間
- 支持 JetBrains 下的所有 IDE
- 支持問題分類,方便利用 Trello board 儀表盤統(tǒng)計(jì)
安裝及配置
(1) 準(zhǔn)備電子看板
插件需要配合 trello(在線看板管理工具) 使用。我們需要先注冊trello,并新建 Code Review 看板。
(2) 安裝插件
在 IDEA 插件市場搜索 Thoughtworks code review tools 并進(jìn)行安裝
Github:??https://github.com/MTWGA/thoughtworks-code-review-tools??
下載頁面
(3) 配置插件
進(jìn)入偏好設(shè)置 -> TW Code Review Tools 菜單進(jìn)行配置插件信息
Trello Token 申請地址:https://trello.com/app-key
配置頁面
Trello Board 信息從Trello Board 地址欄可以找到,如下圖
修改完成后可以直接點(diǎn)擊 “Test Connection” 進(jìn)行測試 或者直接點(diǎn)擊右下角 Apply 進(jìn)行保存配置
記錄反饋
在 IDE 中選擇相應(yīng)的代碼,而后使用快捷鍵 command+option+i 呼出 “code review feedback” 提示框。首先輸入或者選擇人名,按 Tab鍵切換輸入框,依次輸入類型、反饋。最后按 Enter 鍵提交。
Code review Feedback 頁面
提交成功后就有相應(yīng)的提交成功的提示信息,如下圖
提交成功信息
我們也可以在 Trello上查看到信息,如下圖:
Trello 看板圖片
查看 Code Review 狀況
在 Trello 的 Code Review 看板上點(diǎn)擊標(biāo)題左側(cè)的“看板”,轉(zhuǎn)換視圖到儀表盤即可查看統(tǒng)計(jì)的信息。具體操作如下圖:
轉(zhuǎn)換視圖
按照標(biāo)簽選擇,查看code review分類信息
至此,Code Review 工具的配置及使用介紹完成。
Code Review 插件可以幫助我們快速記錄 Code Review 的反饋信息(代碼位置、反饋類型、截止時間,涉及的人員)。這些信息可以幫助開發(fā)者精確找到需要優(yōu)化的代碼位置以及優(yōu)化建議,方便開發(fā)者更快速、準(zhǔn)確地優(yōu)化代碼。
在開展Code Review一段時間之后,逐漸積累起了一定量的數(shù)據(jù)。此時我們可以通過統(tǒng)計(jì)工具分析數(shù)據(jù)。比如按照問題類型進(jìn)行統(tǒng)計(jì),對于出現(xiàn)次數(shù)多的問題分類,可以針對性展開培訓(xùn),提升團(tuán)隊(duì)成員技能。
培訓(xùn)完成后,我們可以根據(jù)新一輪統(tǒng)計(jì)結(jié)果分析培訓(xùn)效果,觀察團(tuán)隊(duì)是否確實(shí)得到了提升,從而形成閉環(huán)。
總結(jié)
Code Review 的好處雖然被廣泛認(rèn)可,但想做好 Code Review 并不容易。首先團(tuán)隊(duì)需要對開展 Code Review 達(dá)成共識,然后針對自己團(tuán)隊(duì)的特性,采用相匹配的實(shí)踐方式。關(guān)于工具,可以嘗試文中提到的 Code Review 插件以及電子看板。在提升自動化程度的同時,積累 Code Review 數(shù)據(jù),指導(dǎo)團(tuán)隊(duì)針對性地提升技能。
使用插件過程中有任何問題或建議,請聯(lián)系插件開發(fā)團(tuán)隊(duì):
LiHui(??hui.li@thoughtworks.com??)
PengJie(??jie.peng@thoughtworks.com??)
GeMaida(??maida.ge@thoughtworks.com??)
LiYiming(??yiming.li@thoughtworks.com??)
?LiQiang(????qiangli@thoughtworks.com???)
原文鏈接:??團(tuán)隊(duì)的Code Review實(shí)踐 (qq.com)??
當(dāng)前文章:團(tuán)隊(duì)的CodeReview實(shí)踐
轉(zhuǎn)載來于:http://m.5511xx.com/article/cdsgojd.html


咨詢
建站咨詢
