【團隊建設】如何做好團隊開發中的 CodeReview(代碼評審)?
前言
你是否曾寫過一個很簡單的需求或者優化?而且你認為不需要審查,就可以直接合并到主分支。可能過了幾天或者幾周,你突然意識到你犯了一個明顯的或是不應該的錯誤。如果有其他人來審查代碼,那這個問題可能就會被發現并及時處理。
CodeReview(代碼評審)是一種用來確認方案設計和代碼實現的質量保證機制,通過這個機制我們可以對代碼、測試過程和注釋進行檢查,主要用來在軟件工程開發過程中改進代碼質量。
可能大家會認為必須是領域內的專家或者資深工程師才能審查別人的代碼,但是以筆者的經驗來看:其實并不是這樣的,評審人并不需要完全理解該項目的業務需求或者有多么豐富的編碼經驗,只需要為本次代碼評審提供新的、合理的、符合規范的視角。
下面筆者以自己的實際經驗來和大家分享一下,如何做好項目開發中的代碼評審。
一、為什么要做
代碼評審首要目的就是為我們帶來一雙新的眼睛,從新的視角去看待那些潛在的問題。
以筆者目前所在的團隊來說,代碼審查是開發過程中的關鍵步驟。通過盡早發現和解決問題,不僅能提高產品的質量,還能確保代碼的一致性和可靠性,它還能讓開發團隊對產品的構建方式與產品所需要的標準達成一致。
因此,盡管代碼評審可能在當前會比較費時費力,但隨著時間的推移,代碼審查發揮的作用會越來越明顯。
二、有哪些好處
CodeReview 習慣的保持、積極參加團隊的 CodeReview,起碼能有以下幾點顯而易見的好處:
- 提升代碼質量:代碼評審可以幫助團隊成員發現潛在的缺陷、漏洞和性能問題,從而確保代碼的穩定性和可維護性。通過評審,團隊成員可以互相學習,借鑒他人的優秀實踐,提高自己的編碼水平。
- 促進團隊協作:代碼評審是一種提高團隊協作的方式,有助于團隊成員更好地了解彼此的工作內容和進度。在評審過程中,團隊成員可以互相交流、分享經驗,從而提高整個團隊的技術水平和解決問題的能力。
- 保證項目進度:代碼評審可以及時發現和解決問題,避免在項目后期出現嚴重的技術債務。通過評審可以確保項目按計劃推進,提高開發效率。
- 培養團隊文化:代碼評審有助于培養團隊的學習氛圍和進取精神。通過互相評審,團隊成員可以共同進步,形成積極向上的團隊文化。
三、具體怎么做
3.1評審條件
- 前置條件:代碼已通過 Alibaba Java Coding Guidelines(idea 插件)的代碼檢查;
- 大型項目:增加/修改超過 10 個文件或超過 200 行代碼的,需組織 CodeReview 會議,邀請相關同事及高級/資深開發同事參與;
- 小型項目:小需求修改如:少于 10 個文件變更或少于 100 行代碼的),至少需要 1~2 位同事幫忙 Review 并提出修改建議;
- 重點邏輯:建議邀請負責過該項目的同事共同 Review 一下,或者在開發的時候結對 Review。
3.2評審重點
- 完整性檢查:功能點、業務日志、異常日志等
- 一致性檢查:代碼邏輯是否符合設計文檔,代碼風格是否統一等
- 正確性檢查:技術選型、注釋是否準確、變量的定義和使用等
- 可修改性檢查:如魔法值 123,使用專門的常量類或枚舉等
- 可預測性檢查:死循環、無窮遞歸、數組越界、空指針等
- 可理解性檢查:命名規則、注釋是否清晰、git 提交記錄描述等
- 邏輯性檢查:實現不過于復雜、代碼拆分、可讀性、擴展性等
- 安全性檢查:包括防止注入攻擊、保護敏感數據、接口鑒權等
3.3評審形式
-
會議評審:將相關評審人員集中在一起,通過會議討論的方式進行代碼評審,如無其它緊急情況,建議每月一次。此方法適用于中小型團隊或重要的代碼更改。
如:
- 部門負責人組織評審會議,時間可以固定在當月的某一天,大約 15-20 分鐘;
- 地點可以選擇一個小的會議室,大約能容納 10-15 個人,需要有投影設備;
- 與會人員可以是部門的整個后端團隊,擬定一個主評審人,大家都可以參與討論
-
隨機抽查:隨機選擇一部分代碼進行評審,以驗證代碼的質量和規范性。這種方法可以作為團隊日常工作的一部分。
-
工具支持:使用代碼評審工具來自動化一些評審過程,例如代碼靜態分析工具和代碼規范檢查工具。這些工具能夠提供一些有關代碼質量的重要指標,并幫助識別潛在的問題。
四、還可以怎么做
4.1提出亮點
- 不僅要提出需要改進的地方,也要提出本次代碼評審的亮點,具體可以從以下幾點入手:
- 性能優化:是否有對性能有優化,合理使用數據庫連接、時/空間復雜度、內存操作等;
- 設計模式:是否有抽象出通用的設計模式,顯著提高模塊的復用率、擴展性等;
- 工具/插件:是否有能提高效率的工具類,包括可以發布的插件以及自定義注解等。
4.2輪流評審
- 需要注意的是,主評審人應該是團隊里的每一位成員,而不是僅由部門領導或資深工程師來擔任,理由如下:
- 集思廣益:每次的代碼評審最重要的是引入新的視角來看待潛在的問題,每個人都會有自己的視角,這樣有助于團隊統一認識;
- 機會平等:年輕的工程師們雖然可能經驗不足,但干勁兒可能比較足,如果能借此機會得到一些鍛煉,那么對團隊來說會是一件好事。
4.2文檔沉淀
- 有了以上的種種具體做法,那么最終還是要把結果文檔化、持久化的,具體可以:
- 評審會議前由主評審基于模板去擬好一篇文檔在會上展示,包括給出代碼片段、改進建議、提出亮點等,方便會上大家及時討論補充;
- 會后可以上傳到團隊的文檔空間或者工作集當中,方便團隊成員隨時學習、回顧。
五、文章小結
關于如何做好項目開發中的 CodeReview(代碼評審)就和大家分享到這里,希望能對大家有一些幫助。
寫在最后,文章如有不足和錯誤,還請大家指正。或者你有其它想說的,也歡迎大家在評論區交流!

你是否曾寫過一個很簡單的需求或者優化?而且你認為不需要審查,就可以直接合并到主分支。可能過了幾天或者幾周,你突然意識到你犯了一個明顯的或是不應該犯的錯誤,如果有其他人來審查代碼,那這個問題可能就會被發現并及時處理。
浙公網安備 33010602011771號