好文分享 —— Google 如何做到 97% 高滿意度的 Code Reviews

“How Google takes the pain out of code reviews, with 97% dev satisfaction” 1 文揭露 Google 內部的 Code Review 工具以及他們大致的 Code Review Guidelines 。

有 5 點值得學習:

  1. 持續改善勝過追求完美

Google 鼓勵持續改善勝過追求完美,主要是若過於追求完美,可能導致 Code Review 的過程變得艱難,將導致開發者未來不願意對程式碼做出改善。這個相當合理,如果初衷是好的,但是卻要面對排山倒海般的質疑、要求,才能將程式碼推上 production 的話,將會導致寒蟬效應,對其他人造成嚇阻作用,大家寧可不動就不動。

  1. 鼓勵分享、散播知識

好的 Code Review 能夠透過分享/教學的過程,提升團隊成員彼此的開發能力與素養,增進彼此對於 Codebase 的認識。幫助彼此提升的好處在於如果未來有任何重大事故,隨時都可以有人站出來接手,不會讓特定團隊成員成為整個專案或某個功能的 Single Point of Failure 。

  1. 保持專業與禮貌

看來 Google 也有遇到同理心的問題,所以希望 Reviewer 必須保持專業與禮貌,而且必須對 PR 作者的解決方案保持開放的態度,只有必要的時候才需要提出替代方案。不過,我對這點較不贊同,應該還是要提供替代方案比較好,因為有時候可能是 PR 作者沒想到,所以提出替代方案讓 PR 作者衡量也是不錯的作法,至於 PR 作者要不要採用就交由其決定。

  1. 做出足夠小的變更

Google 覺得變更最好在 200 行左右就好,不過此限制其實沒有標準答案,畢竟以 Google 的產品量級與追求穩定性的需求, PR 越小的話,如果有任何事故發生,越容易找到問題,也會越容易確定受災範圍。

  1. 追求可讀性(readability)

Google 規定 PR 還要有額外 Readability approvals 才能通過 Code Review 。追求可讀性,我個人超級認同,畢竟程式碼是給人看的,而人的程度有高低之分,所以越容易理解的程式碼,越能夠讓人容易修改、維護,難以閱讀的程式不僅容易墊高進入門檻,也容易讓他人不願意著手修改、維護,這就是為什麼經常有人接手 1 個系統之後都會喊著要重寫的原因,問題可能出在可讀性⋯⋯(不過再下一個接手也通常會喊相同的事⋯⋯)。

除了上述 5 點之外,其實讓 Google 的 Code Review 流程有高滿意的原因在於它的內部工具 “Critique” 體驗太好,可以想像是 Google 內部在用的 GitHub, 不僅內建 Coding Style 檢查、更強大的 diff 工具、交互引用(cross-references)、靜態分析等等,而且還能夠給 “Critique” 回饋(feedback),讓它有進化的機會,好用到連已經離職的 Googlers 還會在 Reddit 發文懷念這個工具XD

不過 “Critique” 畢竟是內部使用的工具,一般人也無法體會,所以該文最後提供大家可以使用 “Gerrit” 這套同樣由 Google 所維護的開源工具,該工具功能與 “Critique” 有著類似的功能,有興趣的朋友可以試看看。

“How Google takes the pain out of code reviews, with 97% dev satisfaction” 1 文的最後,有附上 4 篇 Google 關於 Code Review 的文獻可以參考,想了解更多的話,歡迎閱讀原文。 #原文連結在留言

How Google takes the pain out of code reviews, with 97% dev satisfaction

對抗久坐職業傷害

研究指出每天增加 2 小時坐著的時間,會增加大腸癌、心臟疾病、肺癌的風險,也造成肩頸、腰背疼痛等常見問題。

然而對抗這些問題,卻只需要工作時定期休息跟伸展身體即可!

你想輕鬆改變現狀嗎?試試看我們的 PomodoRoll 番茄鐘吧! PomodoRoll 番茄鐘會根據你所設定的專注時間,定期建議你 1 項辦公族適用的伸展運動,幫助你打敗久坐所帶來的傷害!

追蹤新知

看完這篇文章了嗎?還意猶未盡的話,追蹤粉絲專頁吧!

我們每天至少分享 1 篇文章/新聞或者實用的軟體/工具,讓你輕鬆增廣見聞提升專業能力!如果你喜歡我們的文章,或是想了解更多特定主題的教學,歡迎到我們的粉絲專頁按讚、留言讓我們知道。你的鼓勵,是我們的原力!

贊助我們的創作

看完這篇文章了嗎? 休息一下,喝杯咖啡吧!

如果你覺得 MyApollo 有讓你獲得實用的資訊,希望能看到更多的技術分享,邀請你贊助我們一杯咖啡,讓我們有更多的動力與精力繼續提供高品質的文章,感謝你的支持!