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