進行了1000多次程式碼評審的經驗分享 - DEV
在過去的三年中,我已經審查了1000多個拉(合併)請求。在那段時間裡,我學到了很多東西–主要是關於如何不審閱程式碼,如何減輕過程的痛苦,使高質量的程式碼產生什麼等等。
拉取請求只需要做一件事
最好的辦法是將請求合併成有意義的部分–一個請求只能解決一件事。
在進行程式碼審查時,您需要牢記很多事情。“這背後的意圖是什麼?” ,“這如何與其餘程式碼保持一致?” 和“效果會很好嗎?”。
當您有一個集中的拉式請求試圖解決一個問題時,其中一些問題將變得更容易回答。
另一個重要方面是拉取請求的大小。更大的請求需要成倍增加的時間來審查。當我知道需要花15分鐘以上的時間時,您將不得不等待幾個小時。
較大的拉取請求也會有更多的錯誤,因此獲得批准的時間也會大大增加。這意味著您可能需要等待幾天才能獲得批准的程式碼。而且,如果您的公司敏捷,那將增加合併痛苦的機會,而這僅僅是痛苦的。
自動化儘可能多的檢查
審閱者必須牢記很多事情,其中還包括檢查程式碼格式,是否存在適當的文件,可通過的測試等。我記得當時我不得不考慮所有這些因素,那是分散時間和精力的時間。
解決方案非常簡單–將所有檢查整合到CI管道中。基本上,每當有人提交拉取請求時,它就會執行所有檢查,並且不允許在所有檢查通過之前合併。作為審閱者,您將不必擔心再次格式化。
自動化測試有助於確保作者沒有破壞任何東西,並且測試仍在通過中。根據您的測試方法,這很容易成為您的拉取請求CI中最重要的檢查。
與作者坐在一起檢查程式碼
因為您能夠與作者一起快速遍歷程式碼並分享您的觀點,所以它使稽核過程更快。作者還可以更好地解釋其方法背後的原因,例如是否嘗試過某些東西以及為什麼它不起作用。
因為您能夠與作者一起快速遍歷程式碼並分享您的觀點,所以它使稽核過程更快。作者還可以更好地解釋其方法背後的原因,例如是否嘗試過某些東西以及為什麼它不起作用。
寫評論時要體諒
如果您比程式碼的編寫者更有經驗,則需要考慮您怎麼說的事情很重要。寫得很好的批評可以使開發人員在將來變得更好,但也可能破壞某人的夢想。
我發現最有效的方法是提出開放性問題–這不是激進的,甚至鼓勵開發人員進行批判性思考。這是否會比告訴別人解決方案花費更多時間?是的,短期的。但是從長遠來看,您正在幫助他們成長,他們重犯錯誤的可能性較小。
因此,下次有人在for迴圈中而不是在迴圈之前開啟檔案時,沒有明確指出,而是問“您如何在這裡降低複雜性?”。這將意味著很多。
新增一個名為我在本地執行此程式碼的標誌
最讓我感到困擾的是,在一些小的請求中發現了一個錯誤,因此該功能根本無法正常工作。這意味著開發人員甚至沒有執行程式碼-可能認為沒有必要,因為更改很小。
發生幾次之後,我新增了一個標記,稱為“ 我在本地執行此程式碼”,從而完全解決了問題。我停止審查不在本地執行的程式碼。
這是我們的模板,每個開發人員在建立拉取請求時必須填寫:
合併請求說明
- 有什麼新東西?
- 已實施...
- 有什麼變化?
- 變了...
檢查清單
- []我在本地執行此程式碼
- []我寫了必要的測試
- []我用型別提示覆蓋了我的程式碼
- []我更新了CHANGELOG
Trello卡
應該知道
- 還有什麼應該知道的嗎?
- 有部署說明嗎?
- 還有其他檔案嗎?
相關文章
- 同行程式碼評審過程中的實踐經驗行程
- 程式碼審查的實踐經驗
- 高效程式碼審查的十個經驗
- 谷歌程式碼評審指南已經開源谷歌
- 【翻譯】程式碼審查經驗談
- 同行程式碼審查的實戰經驗行程
- 說透程式碼評審
- 程式碼審查的5點經驗教訓總結
- PHP 程式碼評審的 10 個提示PHP
- LayaNative打包iOS-APP過審經驗分享!iOSAPP
- [譯] 程式碼評審的 8 點建議
- 程式碼審查或評審的最佳實踐 - FogBugz
- Gerrit 2.9.4 釋出,程式碼評審工具
- 程式碼評審的不可能三角
- 淺談軟體工程中的程式碼評審軟體工程
- 程式碼評審的18個軍規,收藏好!
- 經驗分享:10個簡單實用的jQuery程式碼片段jQuery
- Digg4持續部署,程式碼評審和經過測試的提交
- 經驗分享 ----------
- 經驗分享
- Google程式碼評審介紹 - Michaela GreilerGo
- 前端團隊程式碼評審 CheckList 清單前端
- [譯] Go 程式碼評審常見問題Go
- 前端程式碼評審通常注意些什麼前端
- Gerrit 2.10.1 釋出,程式碼評審工具
- 【經驗分享】最新Microsoft Edge Dev遊覽器遊覽Flash網頁的辦法ROSdev網頁
- 【經驗分享】ASP.NET 的 Page_Load 執行了2次,真的(啟用了表單驗證Form Authentication)!ASP.NETORM
- 經驗教訓,慎用Oracle的審計Oracle
- 京東雲開發者|程式碼評審的價值和規範
- 我從 1000 份程式碼審查中學到了什麼
- 谷歌開源內部程式碼評審規範谷歌
- 為什麼程式碼評審(code reviews)很重要View
- Gerrit 2.10 正式釋出,程式碼評審工具
- 經驗分享:乾淨整潔程式碼(clean code)的特點 - oliver
- iOS 經驗分享iOS
- 程式設計入門到進大廠,分享一點學習經驗程式設計
- 大眾點評點餐小程式開發經驗 - 原始碼解析原始碼
- 常用的表單驗證程式碼分享