我們一直覺得代碼評審很重要,但是一直也沒做好,主要問題有兩個:
- 每個人都忙于自己的開發(fā)工作野哭,沒有額外的時間和精力看別人的代碼。
- 缺乏好的工具幻件,把代碼評審做為開發(fā)流程的一部分拨黔。
關于第一個問題,可以通過減少部分同事的開發(fā)工作量绰沥,省出時間來做代碼評審篱蝇。
關于第二個問題,可以考慮選用Gitlab徽曲,據(jù)說對代碼評審支持得很好零截。
使用Gitlab需要我們做哪些改變呢?
-
去掉develop這個長期分支秃臣,只保留master這個長期主分支涧衙,可以給每個環(huán)境建立一個對應分支,這些分支都是master的下游分支奥此,任何的代碼改動都必須經(jīng)過上游分支才能合并到下游分支弧哎,如下圖所示,這個原則可以解決我們有時候忘記把產品分支的代碼合并會develop分支的問題稚虎。
使用臨時的特性分支撤嫩,當開發(fā)接到新的需求時,需要從master分支拉出特性分支蠢终,開發(fā)只能在特性分支上開發(fā)代碼序攘,當代碼測試通過后需要提交merge request請求把特性分支的代碼合并到master分支鸭限。
代碼評審就是利用merge request讓開發(fā)指定code reviewer,代碼經(jīng)過評審之后才能被合并到主分支两踏。大家可以在merge request上互動和互評败京,記錄代碼的修改意見。
是否需要對每個merge request進行代碼評審梦染?我覺得是需要的赡麦,因為只有這樣才能盡早地發(fā)現(xiàn)代碼里的問題,減少修復的成本帕识。另外為了提高code reviewer的評審質量泛粹,每個comit的代碼行數(shù)要少,這樣code reviewer才能集中精力肮疗,更容易發(fā)現(xiàn)代碼里存在的問題晶姊。