如何在團隊中推動Code Review

claypot發表於2019-03-02

Code Review

程式碼評審,簡稱 CR

為什麼要進行 CR

CR 的好處眾所周知,這裡不詳細述說

  • 提升程式碼質量
  • 減少Bug,降低系統風險
  • 相互討論學習,提高團隊能力

為什麼很多公司推動不了 CR

  • 專案大且亂,一時半會看不完
  • 業務需求 VS 程式碼評審

有些專案很大很亂,說不定一次 CR 會議,兩個鐘下來都 CR 不完,或者都還沒理出頭緒就會議結束了。
大部分公司都是產品業務驅動型,少數才是技術驅動型公司,所以一般公司內部都是以業務為主,很難有時間來 CR。

爭取 CR 時間

當業務需求和程式碼評審衝突時,跟產品爭取時間來進行 CR

  • 專案急不急,能延期上線?
  • 部分功能有沒有用,能砍掉?

爭取失敗才是正常

失敗是平常心,大部分時候,業務需求很難讓步,但有些也是有機會,看你自己怎麼爭取。
既然失敗了,該怎麼辦呢?

粒化 CR

個人覺得 CR 可以拆分不通階段來完成不同的職能,以達到粒化的效果。

  • 第一階段:程式碼是否規範(ESLint、命名、註釋)
  • 第二階段:目錄結構是否合理
  • 第三階段:檔案、函式是否過長
  • 第四階段:專案內小架構(專案骨架程式碼、可重用邏輯等)
  • 第五階段:業務邏輯優化
  • 第六階段:待定

因為還沒試過粒化 CR,不知道粒化得是否合理,後面在公司內部推行後再來看下效果,再回來調整粒化的階段內容,以達到較優。

每個階段都在什麼時候進行 CR

如果有足夠多的時間來CR,肯定在上線前進行所有階段 CR 並優化完。
時間不夠的話,粒化CR就派上用場了,按照時間安排進行不同的階段CR。

上線前

前兩個階段不影響邏輯,我覺得可以在開發期末來 CR,亦或者在測試期修 Bug 來 CR 也行。
如果這都完成不了,那隻能是你們自己的問題。

ps: 上線之前至少需要完成第一階段的 CR,儘量連第二階段也完成

上線後

每隔一週進行一個階段的CR,如果專案太多複雜,可以在階段內分模組進行CR。
這時候也別又說沒時間,不然又回到最開始的問題了。解決辦法總是想出來的,不是坐等送上門的。
後面這些階段目前還沒實踐過,不打包票,等嘗試過後再回來填充。

話外題

第一、第二階段是否有需要保留

誠然,有些人認為前兩個階段應該算作個人基本功,不應該拿來當作CR,但我想說的是,這可能是大廠或大牛們的個人基本功。

其實大部分中小型企業、創業型公司,很多人前兩個階段都很難做到,所以才把這兩個階段列進來,如果你的團隊已經優秀到每個人的前兩個階段都紮實,那可以直接忽略掉,直接進入第三階段。

如果覺得我 CR 粒化的不夠完善,不夠合理,歡迎指出,大家一起學習,畢竟這也是我的一點思考,還沒能確定這樣粒化是否是正確的。

富有同理心

CR 推行者需要提前強調 review 和被 review 的人心態要放好,要有同理心,該尊重的要尊重,該虛心接收的虛心接受。

凜冬將至

最近各種裁員資訊層出不窮,建議大夥們放好心態,不要裸辭,不要裸辭,不要裸辭,重要的事說三遍,安心學習準備,以待春天來臨。

參考地址

coolshell.cn/articles/13…
www.jianshu.com/p/6b1e7a6e8…

文章可隨意轉載,請保留此 原文連結

相關文章