天天看點

WHY review code?

原文作者:Sophie Alpert

譯者:UC 國際研發 Jothy

寫在最前:歡迎你來到“UC國際技術”公衆号,我們将為大家提供與用戶端、服務端、算法、測試、資料、前端等相關的高品質技術文章,不限于原創與翻譯。

最近有位朋友問我為什麼做 code review 很重要。 至少大多數矽谷科技公司都會對每一個變更進行 code review,以確定至少有兩個人看過該變更。 在我之前的工作中,我們選擇性地(很少)進行 code review,後來團隊來了一位 Google 的新員工,他鼓勵我們 review 所有代碼 - 我們照做了。 事實證明這是個了不起的決定。

如果你按正确的方式 code review,它不會讓你覺得麻煩。 你和你的 reviewer 不是對手關系,你們是一起努力建構最好的軟體。(重點是不要太介意回報(feedback) - 即使你得改動代碼,也不代表你有問題。獲得回報很正常,因為它幫助了你成長!)

有些公司嚴格規定了每一段代碼必須有多少人review ,以及為每一段代碼必須确定好嚴格的 owner。 我覺得這麼做完全沒有必要,我更喜歡簡單點的系統,唯一的規則是每段代碼都必須有人 review。 在實踐中,你仍然得向維護你所改代碼的人送出評論,但不做硬性要求會更好一些。

以下是我想到的為什麼 review 很重要的幾大原因。 還挺多的呢!

  1. 代碼本身。 code review 最明顯的價值是“發現錯誤”。 或者如果你再深入一些,發現了一些作者不知道的最佳實踐或潛在規則的 case,你可以回報給他以改進具體代碼。
  2. 宏觀層面的知識分享。 當 review 别人的代碼時,你其實是在學習有益的新技術 - 反之亦然,可能别人在 review 你代碼時給你提了更好的建議。 如果你能夠學以緻用,你将成為很棒的工程師。
  3. 微觀層面的知識分享。 通過增加熟悉所有代碼的人數,來緩和“公車因子(bus factor)”。(譯者注:公車因子越大,代表關鍵人物流失導緻項目受到影響的機率越小)
  4. 趨勢分享。 相應地,code review 迫使你與隊友交流你們正在做的事情,你們可以有機會復原,這也確定了你們方向的正确性。
  5. 溝通實踐。 無論是在團隊内部還是外部,清晰的溝通都是成功工作的最重要技能! code review 給了你練習清楚寫作的機會,不論是描述變更目的,還是送出回報的時候。 而且幸運的話,下次你要寫一些“非常重要”的東西時,你會發現自己早就準備好了。
  6. 曆史記錄。 根據我的經驗,如果人們知道他們寫的東西會有人看,他們會寫出更好的 commit 消息。 這在回顧舊變更時非常有用!
  7. 可以讨論的東西。 有時候你想同意某一變更,你會發現很難口頭描述以及表達對特定算法細節的贊同。通過一段代碼進行交流會更精确些,因為代碼往往比較明确。
  8. 團隊凝聚力。 當 code review 變成正常活動時,你會感覺更像是一個團隊一起工作,而不是每個人“都在自己的軌道上”。
  9. 閱讀練習。 練習閱讀别人的代碼,有助于你把自己的代碼寫得更具可讀性(是以可維護)。 這會讓你之後寫出更好的代碼!

如果非得做個選擇,那麼原因 2、5、6 對我來說可能是最重要的。

檢視英文原文

好文推薦: React 作者關于 Hooks 的深度 issue,值得你閱讀

“UC國際技術”緻力于與你共享高品質的技術文章

歡迎關注我們的公衆号、将文章分享給你的好友

繼續閱讀