CodeReview實施總結
1 為什麼需要CodeReview
- 保證程式碼質量
- 通過他人的建議提升技術認知
2 CodeReview的流程
- 制定標準:進行CodeReview前一定要制定好標準。否認提交人和審閱人之間很肯定會引起很多無意義的爭執,導致時間耗費增加。
- 學習標準:為了達成共識,需要大家一起學習標準,最終達成共識。
- 評審人前置準備:根據專案情況選擇合適的人來評審,同時評審人需要為程式碼評審做好準備。包括需求學習、方案學習。
- 提交人前置準備:為了提高CodeReview效率,應該對程式碼提交制定相應標準,這樣可以提高效率。
- 程式碼評審:根據標準原則及工程經驗提出意見
- 總結分析迭代標準:根據CodeReview中產生的問題,進一步學習總結,迭代標準,改進下一次Review的效率。
上述是CodeReview的一種流程。這6步驟通常會形成一個閉環,持續迭代。接下來幾部分將詳細介紹這些過程的各個環節。
3 制定標準
3.1 為什麼要制定標準
讓團隊對問題達成一致,避免無意義的衝突和時間消耗。同時出現問題時有一個可參考的解決標準。
3.2 如何制定標準
- 有意義:制定的標準對於當前現狀具有實際意義。能解決當前面臨的主要問題。而不是開始就整理一大堆複雜且與主要矛盾無關的標準。
- 充分調研:定標準的意義是讓團隊對問題能達成共識,因此需要與大家進行充分的討論。而不是某個人主觀臆斷而定義。
- 清晰明確:為了讓大家達成共識,標準應該是清洗明確無二義性。
- 可執行:標準最終是讓團隊參照並執行,因此大而虛最終無法執行的標準是不可行的。
3.3 制定哪些內容
3.3.1 標準內容制定
- 衝突解決方案:如果review過程中出現衝突如何解決
- 權利與責任:出現問題提交人與稽核的應承擔的責任
- 特殊情況解決方案:出現緊急故障時review的過程。例如跳過review或僅又review核心部分程式碼。或針對其它特殊情況進行特殊制定。
- review檢查點:一次review應該關注哪些內容
3.3.2 提交人提交標準制定
進行一次CodeReview並不是隨意就能發起。這樣進行CodeReview的效率會很低。因此也需要滿足一定條件。
- 自測:一定要先行自測完畢
- 選擇評審人:有限選擇熟悉相關業務的同伴作為評審人
- 提交描述:對自己提交的內容要有準確簡介的描述。
- 評審程式碼量:一次評審程式碼量儘量做好控制。利用分治的原則,避免一次提交過多程式碼。這樣拆解提高評審效率。例如一次提交的程式碼量控制在500行內。
- 評審流程說明:要告知評審人提交的程式碼閱讀流程是什麼。
- 評審人評論跟進:對於評審人的程式碼評論要給出說明或進行相應的改進,並重新提交審閱。
3.3.2 評審人標準制定
- 通過標準:根據業務特點制定code review的檢查項。
- 反饋:應儘快給與提交人反饋,避免時間過長造成遺忘。
- 評論:code review也涉及到人與人間的交流,因此要使用合適的方式對提交人程式碼進行評論及交流。給出必須修改、可忽略、建議修改等評註。
4 團隊學習
有了標準後需要讓大家達成一致,如果有不一樣的意見也可得到及時反饋。可以藉助內容分享讓大家進行。
5 業務梳理
評審的前提是雙方對業務都有一定認識,因此需要同步需求概況。
同時對開發者的設計過程要有一定了解。有了這些背景就能更好的進行評審。
6 程式碼評審
根據檢查項和業務狀態對程式碼進行評審,並給出建議。通常需要關注下列資訊。
- 完整度:看一次提交是否完整的實現了本次的業務需求。
- 單元測試:檢查核心功能是否有單元測試且對於邊界條件能夠通過測試。
- 註釋:對於複雜的業務邏輯,如果不能通過程式碼本身的命名來表現含義。需要檢查是否有有效註釋進行說明。
- 技術問題:例如是否存在併發問題、快取同步問題等、是否能應對異常情況,魯棒性是否滿足、是否易於理解。技術問題就要結合業務梳理階段與技術方案來一起進行評審。
7 總結分析迭代標準
在評審結束後,可能制定的標準不能滿足所有條件。因此需要進行溝通迭代進行標準升級。
參考資料
[1]google的code review機制,https://juejin.cn/post/6844903944175484936
相關文章
- 實施PLM系統的總結及建議
- Weblogic安裝實施學習筆記(自總結帶目錄)Web筆記
- CodeReview雜談View
- GitLab整合GPT進行自動化CodeReview實戰GitlabGPTView
- 實訓總結
- OpenDoc – 前端團隊CodeReview制度前端View
- Linux實踐總結Linux
- 【軟體實施面試】MySQL和Oracle聯合查詢以及聚合函式面試總結面試MySqlOracle函式
- CodeReview常見程式碼問題View
- 如何進行正確的 CodeReviewView
- CodeReview 的經驗和原則View
- Apk瘦身實戰總結APK
- React hooks實戰總結ReactHook
- Git實戰命令總結Git
- PyCharm 實用使用總結PyCharm
- RESTful API實踐總結RESTAPI
- Fiddler 實用功能總結
- 對話SAP Ariba全球總裁:如何確保實施成功?
- 關於CodeReview的一些思考View
- 1.22-wes實戰-總結
- ffmpeg 命令列實用總結命令列
- React Hooks工程實踐總結ReactHook
- 小程式初實踐總結
- MySQL專案實戰總結MySql
- Elasticsearch 實戰經驗總結Elasticsearch
- RPA機器人實施的總指揮所:COE卓越中心機器人
- uniapp專案實踐總結(二十)URLScheme 協議知識總結APPScheme協議
- MySQL實施文件MySql
- Kubernetes實戰總結 - DevOps實現(轉載)dev
- AI應用的程式碼審查CodeReviewAIView
- 2017前端實習生面試總結前端面試
- 實習專案開發總結
- 消消樂實驗總結與反思
- node實戰前端快取總結前端快取
- 跨域方案總結與實現跨域
- 前端模板引擎的實現總結前端
- 小程式開發實踐總結
- Vue keep-alive實踐總結VueKeep-Alive