原文作者:Sophie Alpert
譯者:UC 國際研發 Jothy
寫在最前:歡迎你來到“UC國際技術”公眾號,我們將為大家提供與客戶端、服務端、演算法、測試、資料、前端等相關的高質量技術文章,不限於原創與翻譯。
最近有位朋友問我為什麼做 code review 很重要。 至少大多數矽谷科技公司都會對每一個變更進行 code review,以確保至少有兩個人看過該變更。 在我之前的工作中,我們選擇性地(很少)進行 code review,後來團隊來了一位 Google 的新員工,他鼓勵我們 review 所有程式碼 - 我們照做了。 事實證明這是個了不起的決定。
如果你按正確的方式 code review,它不會讓你覺得麻煩。 你和你的 reviewer 不是對手關係,你們是一起努力構建最好的軟體。(重點是不要太介意反饋(feedback) - 即使你得改動程式碼,也不代表你有問題。獲得反饋很正常,因為它幫助了你成長!)
有些公司嚴格規定了每一段程式碼必須有多少人review ,以及為每一段程式碼必須確定好嚴格的 owner。 我覺得這麼做完全沒有必要,我更喜歡簡單點的系統,唯一的規則是每段程式碼都必須有人 review。 在實踐中,你仍然得向維護你所改程式碼的人提交評論,但不做硬性要求會更好一些。
以下是我想到的為什麼 review 很重要的幾大原因。 還挺多的呢!
-
程式碼本身。 code review 最明顯的價值是“發現錯誤”。 或者如果你再深入一些,發現了一些作者不知道的最佳實踐或潛在規則的 case,你可以反饋給他以改進具體程式碼。
-
巨集觀層面的知識分享。 當 review 別人的程式碼時,你其實是在學習有益的新技術 - 反之亦然,可能別人在 review 你程式碼時給你提了更好的建議。 如果你能夠學以致用,你將成為很棒的工程師。
-
微觀層面的知識分享。 通過增加熟悉所有程式碼的人數,來緩和“公車因子(bus factor)”。(譯者注:公車因子越大,代表關鍵人物流失導致專案受到影響的概率越小)
-
趨勢分享。 相應地,code review 迫使你與隊友交流你們正在做的事情,你們可以有機會回滾,這也確保了你們方向的正確性。
-
溝通實踐。 無論是在團隊內部還是外部,清晰的溝通都是成功工作的最重要技能! code review 給了你練習清楚寫作的機會,不論是描述變更目的,還是提交反饋的時候。 而且幸運的話,下次你要寫一些“非常重要”的東西時,你會發現自己早就準備好了。
-
歷史記錄。 根據我的經驗,如果人們知道他們寫的東西會有人看,他們會寫出更好的 commit 訊息。 這在回顧舊變更時非常有用!
-
可以討論的東西。 有時候你想同意某一變更,你會發現很難口頭描述以及表達對特定演算法細節的贊同。通過一段程式碼進行交流會更精確些,因為程式碼往往比較明確。
-
團隊凝聚力。 當 code review 變成常規活動時,你會感覺更像是一個團隊一起工作,而不是每個人“都在自己的軌道上”。
-
閱讀練習。 練習閱讀別人的程式碼,有助於你把自己的程式碼寫得更具可讀性(因此可維護)。 這會讓你之後寫出更好的程式碼!
如果非得做個選擇,那麼原因 2、5、6 對我來說可能是最重要的。
好文推薦: React 作者關於 Hooks 的深度 issue,值得你閱讀
“UC國際技術”致力於與你共享高質量的技術文章
歡迎關注我們的公眾號、將文章分享給你的好友