你做過代碼 Review 嗎?
本文轉載自微信公眾號「Java極客技術」,作者鴨血粉絲。轉載本文請聯系Java極客技術公眾號。
Hello 大家好我是阿粉,代碼 Review 相信大家一定不會陌生,但是真正在日常工作中能使用并且堅持執行下去的公司或者團隊,阿粉覺得并不多,但是代碼 Review 的好處大家都是有目共睹的,很多招聘崗位上面都有這樣的要求,堅持執行代碼 Review 對團隊,對公司是很有好處的,特別是對寫代碼的同事!每個一起閱讀代碼的同事都會提出一些自己的建議 ,這些建議都是很寶貴的資源,往往都會有很大的收獲。
那么如何做好一場代碼 Review 呢?想要做好一場合格的代碼 Review,首先我們需要知道代碼 Review 的過程中都有哪些角色以及需要怎樣的流程。
角色
- 代碼的作者 Author;
- 閱讀代碼的同事 Reviewer;
- 主持人 Host;
- 記錄員 Recorder。
流程
- 提前一天發送 Review 代碼郵件給相關人員,確定 Host 和 Recorder;
- 由 Host 主持 Review 會議;
- 由 Reviewer 和 Author 進行代碼走讀;
- 由 Recorder 進行改進記錄。
在做代碼 Review 之前 Author 需要提前一天需要發正式郵件給相關人員,并且將需要被 Review 的代碼通過郵件附件的方式,發送給相關的 Reviewer 讓他們提前閱讀,這樣有助于 Review 的時候可以更高效的進行。并且提前溝通好代碼 Review 的會議 Host 和 Recorder。Host 在會議過程中負責組織大家發言和維護秩序,讓代碼 Review 更高效;Recorder 則負責將整個 Review 過程中提到的需要優化和改進的點進行文檔形式的記錄,記錄的信息需要言簡意賅,將哪個文件哪一行代碼,問題是什么,建議怎么優化都需要記下來,并且在會議結束過后以郵件的形式發送給 Author 和抄送大家。
Review
在進行代碼 Review 的時候 Author 需要從文件的第一行開始進行一行行的代碼走讀,對每一行的代碼進行描述,這里需要注意的是不要認為某個功能很簡單,就可以一句帶過,往往很多線上 Bug 都是因為這種忽略導致的。走讀代碼的時候 Author 需要解釋清楚每一行代碼的含義,說明這行代碼是干嘛的,為什么要這樣寫。Reviewer 則需要根據 Author 的描述再結合自己之前閱讀代碼的理解進行提問或者改進方案。
代碼走讀的過程持續進行的同時 Recorder 需要及時記錄需要改進的內容,并把提出的優化方案記錄下來。代碼走讀的過程是整個 Review 的核心,在這個環節中我們需要注意很多東西。知乎上面有個提問大家的公司的 Code Review 都是怎么做的?遇到過哪些問題?,上面有個回答提出的幾個點很不錯,我覺得有必要分享給大家,對我們的整個 Review 會很有幫助,特別是當自己是 Reviewer 的時候,需要格外注意。
- 對事不對人。要記住大家都是同事,今天自己是 Reviewer 來對別人的代碼進行 Review,哪天別人就會對自己的代碼進行 Review,所以在整個代碼 Review 的環節中,我們可以提出自己的建議,但是需要注意自己的用詞和語氣,雖然程序員有鄙視鏈,并且都認為別人的代碼垃圾,但是這種時候不能瞎說,容易打架的,還是要謙虛點。
- 用正面的詞匯進行評價。跟上面說的一樣,我們需要用正面的詞匯進行評價代碼,考慮 Author 的情緒,即使代碼寫的不好。這個很好理解,畢竟代碼 Review 是在很多人面前的,對 Author 來說,讓別人看自己寫的代碼就像在別人面前裸奔一樣,所以我們不僅要提出意見在好的地方我們也要進行正向的表揚。
- 如果有更好的方案一定要提出來。代碼 Review 的目的就是優化代碼,找出代碼中的隱藏 BUG 以及邏輯問題。所以如果發現了代碼有任何不優雅的地方或者會出現問題的地方一定要及時的提出來,不要擔心自己說的不對,或者考慮 Author 的面子問題,不指出來,提供更好的解決方案,讓大家一起進步。
- Review 會議是 Review 代碼,而不是討論需求。這一點也是很容易被帶偏的一個點,經常我們會發現在 Review 的過程中,慢慢的就變成了討論需求了,這種情況一定要避免發生,不然整個代碼 Review 環節就是失敗的,無法進行下去了。所以 Author 在發起代碼 Review 邀請時一定要確保自己理解的需求是正確的,避免浪費大家的時間。
- 高效的進行。進行代碼 Review 的時候我們需要注意一定要高效,如何做到高效就需要每個人都做好相應的準備,Author 需要對自己的代碼進行熟練的講解,Reviewer 需要在參加會議之前將需要 Review 的代碼看一下,提前找到可能隱藏的 Bug,對于不懂地方需要做好記錄,方便開會的時候及時指出。
- 避免形式主義。這一點也是被很多小伙伴忽略的一點,隨著代碼 Review 的次數越來越多,很多小伙伴可能就把這個當成一個任務,慢慢的就變成了形式主義,而不是注重實際,每次代碼 Review 的時候就很隨意,長期這樣下去對公司,團隊以及自己都不好,而且還浪費時間。
總結阿粉今天給大家介紹了一個如何做一個合格的代碼 Review,當然這只是阿粉自己的一些見解,大家有任何意見可以在評論區給我們留言,大家一起交流學習。