天天看點

你們公司做代碼審查嗎?

每當從各種公司聽到他們正在嘗試自動化部署/測試的事情,我都非常關注,但通常會很吃驚,他們很少會考慮去實行代碼審查制度。

看到這種情況,我通常想問:如果代碼沒有經過其它人的審查,你如何知道你要測試的是什麼?這答案(如果有的話)通常是捏着手指頭說有幾個人在做代碼審查或“正在考慮中”。

沒有代碼審查?真的嗎?不可思議?!?

代碼審查不是可有可無的。

不論你采用什麼形式的測試過程,什麼形式的部署過程,沒有代碼審查——game over。為什麼?因為代碼的品質是一種人能看懂的品質。不管你如何測試,有如何嚴謹的部署流程,隻有當另外一個人看了這些代碼,并且表明能看懂時,這些 代碼才有意義。如果看不懂,你認為這樣的代碼——雖然測試通過、部署符合流程——可以上線嗎?

沒有經過代碼審查,測試說明不了任何問題。測試通過但沒有經過代碼審查的代碼仍然是有bug的。

**

什麼是代碼審查?**

請參考谷歌是如何做代碼審查的。

設計中使用的“走廊ux測試”是說:在開始實作你的設計前,至少需要有一個人看過你的設計。代碼審查是相同的道理。

代碼審查是說:在把你的代碼合并到代碼庫裡之前,請至少找一個人看看你的代碼。

如何進行代碼審查?

下面是代碼審查基本的步驟:

1.把身體向左轉。

2.看到另外一個程式員?拍拍他的肩膀。

3.讓他看你的顯示器。

4.說:這代碼你能看懂嗎?我打算把它送出到代碼庫裡。

5.聽他的建議。

6.自己做決定:是應該修改一下,還是繼續送出到代碼庫裡。

就這樣。

現在,我想告訴你,有大量的代碼審查工具可以使用。它們都能高度的自定義配置。它們的作用都是讓你代碼審查過程更方面、靈活。

簡單的幾款代碼審查工具

下面是我推薦的幾款簡單的代碼審查工具(如果你的公司的程式員少于5千人)。

1.less

2.diff, 或 wdiff

3.github pull requests

就是這些。雖然還有很多很多的代碼審查工具,我很少聽說哪個程式員說喜歡它們的。而我的觀點,less, diff, github pull requests能解決我們正常開發中的大部分代碼審查問題。

如果你的代碼審查過程過于複雜,需要使用大量的工具,這說明你過分的依賴于一些不必要的形式,你應該簡化它們。你可以說成你的反對的觀點,或在微網誌上和我們讨論。

你們公司做代碼審查嗎?

繼續閱讀