本文將介紹 Code Review的相關內容,包含為什麼要Code Review,以及Code Review主要review哪些部分的內容,之後講述如何才能形成一套比較好的Code Review規則和流程。後續講述了Code review中一些可以遵守的比較好的規則,最後講述瞭如何才能讓Code review流程跑起來。
本文為最近了解code review相關內容的總結,有問題/有建議可以在評論區幫忙指出,感謝!!!
程式碼審查(Code Review)是現代軟體開發團隊中非常重要的一環,因為它可以帶來以下幾個方面的好處:
總之,程式碼審查可以幫助開發團隊提高程式碼質量和開發效率,降低維護成本,提高團隊共同作業和開發者技能,從而在軟體開發專案中發揮重要作用。
Code Review整個流程中,比較重要的一個節點,是對程式碼進行Review,然後指出程式碼中可能存在的問題。具體主要關注哪些程式碼問題,應該是每個團隊,在實踐中總結出適合自己的一套規範。這裡大概說明一些通用的Code Review可能需要關注的內容。
程式碼邏輯Review主要 包括條件分支、迴圈結構、例外處理、錯誤處理等方面的實現是否合理。
Review程式碼時,需要關注程式碼的可讀性和可維護性,包括程式碼的命名、註釋、縮排、程式碼段的長度、函數和方法的引數和返回值等方面。
確定團隊的目標和需求
確定code review的規則和流程
開始實施
收集和分析資料
收集資料
收集問題型別和解決方式的資料,例如程式碼問題的型別、解決方式、處理時間等
收集code review的時間安排/程式碼量
資料分析
根據資料記錄結果,獲取到code review經常出現的問題
對code review的耗時進行分析,來改進流程
效果分析
規則和流程的優化
通過checkList來做code review似乎是一個比較好的方式,下面是開發者和reviewer的一個checkList的範例。
限制單次code review的時間,能夠避免待review的程式碼量過多,如果一次待review的程式碼量過多,此時整個流程很容易流於形式。因此,這裡可以根據不同團隊的實際情況,定義好單次code review的耗時,限制在一個時間範圍內。
對於一些常見的程式碼review的問題,可以制定程式碼掃描規則,在code review之前,先執行一次程式碼掃描,識別出其中比較常見的問題,減少程式碼review的時間。
這樣對於也減輕了reviewer的負擔,也利於開發者自行發現問題,自行解決,避免時間的浪費。
團隊中的成員可以定期分享 Code Review 的經驗和技巧,以便更好地提高審查的效率和質量。
有這樣一個分享,那麼code review這個過程可以作為一個輸入,能夠增加大家code review的參與度。
code review的流程,在執行過程中,大概率會發現其中並不合理的地方,或者有待改進的地方,此時應該每隔1個月/2個月,來回顧整個流程,發現其中不合理的地方,讓code review更好得進行下去。
同時,在code review過程中,也有收集一些code review的資料,可以對其進行分析,發現其中不合理的地方,針對不合理的地方進行改進。
首先,團隊建立code reviwe的目標和需求,為什麼要code review,有目標了,後續才能評估code review是否達到了目的。
首先需要確定code review的時間節點的安排。是開發完成後,提測前開始code review還是其他時間節點呢。code review的時間安排是否包含到專案排期中。
reviewer是否得提前知會,在何時知會? 其是否要參加需求評審以及測試用例評審等專案相關需求的評審會? 以及reviewer在code review過程的所耗工時要怎麼統計呢,是不是在專案排期時,也需要考慮到code review的耗時,然後耗時大致的排期,是否設定為開發時間的10%,還是其他,是否先執行,後續再根據實際情況調整呢?
上面code review的時間安排已經確定好了,之後便需要開始code review,這裡需要團隊內確定code review的工具,是使用開源工具,如reviewBoard,亦或者是直接gitlab平臺提交mr的時候順便review呢,這個也需要確定。
當平臺確定好之後,我們需要確定review的形式,是開發和reviewer一起review,reviwer一邊看一遍提問,亦或者是reviewer先整體看一遍,然後有疑問再提出,然後開發再當面說明,或者是其他形式,這個也是需要確定的。
之後比較重要的點,便是每次review的程式碼量的問題,我們可以想象,如果每次需要review的幾千行的程式碼,此時往往review便會流於形式,其實並不會起到太大的作用。這裡應該由團隊內部協商好code review的形式,是單次少量,多次review; 還是專案開發完成之後,再整體review; 或者是兩者的結合,一些專案整體開發完成之後再review,一些專案採取單次少量,多次review的形式,亦或者是其他。
接著,就要開始程式碼review,這裡就需要確定review主要review哪些內容,這個範例可以參考第三點所說的,review哪些部分的內容,不過還是需要團隊自行確定。不過這裡有個前置依賴,團隊需要有一套統一的程式碼規範,如命名規範等。這裡假設已經確定review的內容包含程式碼的可讀性,如果沒有一套統一的規範,review流程是比較難執行下去的。
到這裡,我們可以算是完成了一次code review的流程,但是一個流程如果只有執行,沒有回顧,那是不太合適的,所以對於code review的流程是需要定時回顧的。當進行回顧時,需要有資料來做支撐的,才能識別出整體流程是否存在不合理的地方,那資料從哪裡來呢?那隻能從每次程式碼review的過程中獲取。
所以,這裡也需要定義每次review流程中,需要記錄下來一些內容,方便後續回顧,具體記錄的內容,可以參考第四點制定cr的規則和流程是什麼呢 中第四點的內容,然後資料記錄的方式也可以統一一下,比如使用飛書檔案或者多維表格,亦或者是其他形式來儲存。方便後續回顧使用。
當上面的內容都確定好之後,在我看來,一個code review的流程其實就已經完成了,這個時候便可以考慮如何讓code review整個流程跑得更順暢,這裡可以參考第六點如何讓code review跑起來中的內容,比如使用checkList來減輕心智負擔,其次可以建立靜態掃描規則集,能夠減少code review的工作量等。
然後再定時回顧整個code review的流程,發現其中不合理的地方,再對其進行改進。
該檔案是一篇關於Code Review的輸出,介紹了Code Review的規則和流程需要包含的內容,以及具體需要Review的內容。此外,還描述了一些在Review過程中需要遵守的原則,如尊重,建議等,以保持Review的積極性和有效性。
最後,列舉了一些方式,如定期進行Review、使用靜態程式碼掃描工具、checklist來進行code review,進行學習和分享,能夠讓Code Review更好地執行下去。