Google 給程序員的 13 條代碼審查標準! 代碼審查標準:

以下爲譯文:

在本文中,我們將簡要介紹13條代碼審查標準,希望能夠通過這些標準極大地幫助改善軟件的質量,同時讓開發人員保持心情愉悅。

代碼審查是開發過程中的一個環節,顧名思義,代碼審查需要一位或多位開發人員審查另一位開發人員(即代碼的作者)編寫的代碼,以確保:

  • 代碼沒有任何錯誤,沒有bug,也沒有問題;

  • 代碼符合質量與樣式指南的要求和標準;

  • 代碼完成了所有預期功能;

  • 合併代碼後,代碼庫仍然能夠正常運行,且達到更好的狀態。

這就是爲什麼代碼審查是軟件開發的重要環節的原因。

代碼審查者擔當着把關者的職責,負責決定這些代碼是否能夠成爲代碼庫的一部分並進入生產環境。

Google以其卓越的技術而聞名世界,他們擁有高效的代碼審查標準,這些標準突出了審查代碼時需要牢記的一些重點。

在Google,“代碼審查的主要目的是確保Google代碼庫內整體的代碼運行狀況能夠不斷提升。”

—— Google工程實踐文檔

以下是審查代碼時你需要牢記的一些重點。

代碼審查標準:

這些代碼能夠提升系統整體的運行狀況

每次代碼變更(拉取請求)都能夠提升系統整體的運行狀況。重點在於,即便是很小的改進,合併代碼後都會提升軟件或代碼庫的運行狀況。

快速審查代碼,並給出積極地響應和反饋首先也是最重要的一點,不可延誤代碼的合併。
世上沒有完美的代碼。如果代碼可以提升系統的整體運行狀況,則應該立即交付這些代碼。

“關鍵在於,世上沒有完美的代碼,只有更好的代碼。”

—— Google工程實踐文檔

如果手頭沒有緊急任務,那麼請在代碼提交上來後立即進行審查。響應拉取請求的時間最長不得超過一個工作日。一天之內,應針對一次拉取請求完成多輪的部分或完整的代碼審查。

在代碼審查的過程中開展教育和啓發

在代碼審查的過程中,應儘可能通過共享知識和經驗提供指導。

審查代碼應遵循標準

請始終牢記,樣式指南、編程標準以及相關的文檔應該作爲代碼審查的絕對權威。例如,製表符與空格的使用應保持一致,此時你可以引用編程約定。

解決代碼審查衝突

解決代碼審查衝突時,應遵循樣式指南以及編程標準中商定的最佳實踐,並徵求其他擁有更多產品領域知識和經驗的人的建議。

如果你的意見是可選或不怎麼重要的,請在註釋中說明,然後由作者來決定是解決還是略過。作爲代碼審查者,在沒有樣式指南或編程標準的情況下,你至少可以建議此次代碼變更與其餘代碼庫保持一致。

演示UI變更是代碼審查的一部分。

如果代碼變更涉及用戶界面變化,則除了代碼審查外,還需要提供演示,確保界面符合預期且與界面設計一致。對於前端代碼變更,你需要進行演示,或確保代碼變更包括必要的UI自動化測試,以驗證添加或更新的功能。確保代碼審查中包含了所有測試除非遇到緊急情況,否則拉取請求應包含所有必要的測試,例如單元測試、集成測試以及端到端測試等。這裏所說的緊急情況指的是,某個需要儘快修復的bug或安全漏洞,而測試可以等到以後再添加。在這種情況下,請確保創建了適當的票證/問題,並確保有人負責在完成熱修復或部署後立即完成測試。

我們絕對不可以跳過測試。如果時間有限,某些目標有無法實現的風險,那麼解決方案不是跳過測試,而是限定可交付成果的範圍。

不要爲了代碼審查打斷手頭的工作

如果你正在專心致志地工作,那麼請不要打斷自己,因爲你需要花費很長時間才能重新投入工作。換句話說,打斷專心工作的開發人員所付出的代價遠遠超過了讓開發人員等待代碼審查。你可以在休息(午餐或咖啡等)過後,進行代碼審查。

大多數時候,整個代碼審查以及代碼的合併無法在一天內完成。重要的是迅速給作者一些反饋。例如,雖然可能無法完成完整的審查,但你可以快速指出一些有待探討的地方。這可以極大地降低代碼審查期間的挫敗感。

審查所有代碼,不要做任何假設

你需要審查提交上來的每一行代碼。不要對人工編寫的類和方法做任何假設,而且應該確保你理解代碼在做什麼。

確保你理解正在審覈的代碼。如果不理解,則請作者澄清或提供代碼演示和解釋。如果你不具備審覈部分代碼的資格,則請其他有資格的開發人員代爲審查。

審查代碼時需要保持大局觀

從更廣闊的視野來看待代碼變更會更有幫助。例如,某個文件被修改,並添加了4行新代碼。請不要只看這4行代碼,你應該考慮審查整個文件,並檢查新添加的內容。它們是否會降低現有代碼的質量?它們是否會導致現有功能成爲重構的候選對象?如果不在函數/方法或類的背景下審查添加的代碼,則隨着時間的流逝,你將會得到一個面臨無法維護、糾纏不清、不易於測試等問題的類,而且這個類很難擴展或重構。請記住,即便是微不足道的改進,隨着時間的推移,也可能導致產品出現缺陷,同樣,即便是輕微的代碼降級或技術負債也可能在日積月累下導致產品難以維護和擴展。

在代碼審查期間認同和鼓勵出色的工作

如果看到出色的代碼變更,請別忘了大力表揚和鼓勵作者。代碼審查的目的不僅僅是發現錯誤,而且還應該鼓勵和指導開發人員出色的工作。

在代碼審查期間應保持謹慎、尊重、友善和思路清晰

在代碼審查期間,你應該保持友善、思路清晰、有禮貌和尊重別人,這一點至關重要,同時也要給予作者清晰的反饋和積極的幫助。在審查代碼時,你需要做到對事不對人,即對代碼做出評論,而非開發人員。

詳細解釋代碼審查的意見,並注意尺度

每當代碼審查意見提出替代方案或指出某些問題時,重要的是你需要解釋其中的原因,並根據個人的知識和經驗提供示例,以幫助開發人員理解爲何你的建議能夠提升代碼質量。在建議修改或變更代碼時,你需要在如何指導作者修改代碼方面找到適當的平衡。例如,我更喜歡指導、解釋、提示或建議,而不是整個解決方案。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章