既然您已經(jīng)知道Code Review應(yīng)該Review什么为鳄,那么管理跨多個(gè)文件的評審的最有效方法是什么呢?
- 這種變更合理嗎?它有一個(gè)好的描述嗎?
- 首先查看最主要部分的變更咽袜。它的整體設(shè)計(jì)好嗎?
- 按照適當(dāng)?shù)捻樞虿榭碈L的其余部分。
第一步:從更廣闊的角度看待變更
查看CL的描述和CL的一般功能。這種變更合理嗎?如果這個(gè)變更一開始就不應(yīng)該發(fā)生,請立即解釋為什么不應(yīng)該變更切省。當(dāng)您拒絕這樣的變更時(shí),向開發(fā)人員建議他們應(yīng)該做什么也是一個(gè)好主意杈抢。
例如数尿,你可以說“看起來你在這方面做得不錯(cuò),謝謝!但是惶楼,我們實(shí)際上是要?jiǎng)h除您在這里修改的FooWidget所在的系統(tǒng)右蹦,所以我們現(xiàn)在不想對它進(jìn)行任何新的修改。不如重構(gòu)我們的新BarWidget類?”
請注意歼捐,評審人不僅拒絕了當(dāng)前的CL并提供了一個(gè)替代的建議何陆,而且還很有禮貌。這種禮貌是很重要的豹储,因?yàn)槲覀兿胍憩F(xiàn)出我們作為開發(fā)者彼此尊重贷盲,即使我們意見不一致。
如果您得到了多個(gè)您不希望進(jìn)行變更的CLs,那么您應(yīng)該考慮為外部貢獻(xiàn)者或您的團(tuán)隊(duì)重新制定開發(fā)流程或發(fā)布的流程巩剖,以便在編寫CLs之前進(jìn)行更多的溝通铝穷。在人們做了大量的工作,最好在不得不扔掉或徹底重寫之前佳魔,對他們說“不”曙聂。
第二步:檢查CL的主要部分
找到一個(gè)或多個(gè)文件是這個(gè)CL的“主要”部分。通常鞠鲜,有一個(gè)文件的邏輯更改數(shù)量最多宁脊,它是CL的主要部分。首先看看這些主要部分贤姆。這有助于為CL的所有更小的部分提供上下文榆苞,并且通常會(huì)加速代碼檢查。如果CL太大霞捡,您無法確定哪些部分是主要部分坐漏,請?jiān)儐栭_發(fā)人員應(yīng)該首先查看哪些部分,或者請他們將CL分成多個(gè)CL弄砍。
如果您看到CL的這一部分存在一些主要的設(shè)計(jì)問題仙畦,您應(yīng)該立即發(fā)送這些評論输涕,即使您現(xiàn)在沒有時(shí)間來查看CL的其余部分音婶。
實(shí)際上,檢查CL的其余部分可能是浪費(fèi)時(shí)間莱坎,因?yàn)槿绻O(shè)計(jì)問題足夠嚴(yán)重衣式,那么很多其他正在檢查的代碼將會(huì)被刪除,不管怎樣都無關(guān)緊要檐什。
有兩個(gè)非常重要原因需要我們立即評論這些關(guān)于主要的設(shè)計(jì)的問題:
- 開發(fā)人員通常會(huì)發(fā)送一個(gè)CL碴卧,然后在等待評審期間立即根據(jù)這個(gè)CL開始新的工作。如果您正在審查的CL中存在主要的設(shè)計(jì)問題乃正,那么他們也將不得不重新處理后面的CL住册。你想在他們在有問題的設(shè)計(jì)上做太多額外的工作之前避免這種情況的發(fā)生。
- 主要的設(shè)計(jì)變更比小的變更需要更長的時(shí)間瓮具。開發(fā)人員幾乎都有最后期限;為了在最后期限前完成這些工作荧飞,并且在代碼庫中仍然有高質(zhì)量的代碼,開發(fā)人員需要盡快開始對有設(shè)計(jì)問題的CL進(jìn)行重寫名党。
第三步:按照適當(dāng)?shù)捻樞虿榭碈L的其余部分
一旦您確認(rèn)了CL整體上沒有重大的設(shè)計(jì)問題叹阔,那么請嘗試找出一個(gè)邏輯順序來檢查這些文件,同時(shí)確保您不會(huì)錯(cuò)過檢查任何文件传睹。通常耳幢,在您瀏覽完主要文件之后,最簡單的方法就是按照代碼審查工具顯示文件的順序?yàn)g覽每個(gè)文件欧啤。有時(shí)睛藻,在閱讀主代碼之前先閱讀測試也是有幫助的启上,因?yàn)檫@樣您就會(huì)對變更應(yīng)該做什么有一個(gè)概念。
下一章: Review的速度