文 / Liz Kammer (Google)、Maggie Hodges(用戶體驗(yàn)研究顧問)和 Ambar Murillo (Google)
這是我們 代碼健康 系列的另一篇文章。這篇文章最早出現(xiàn)在世界各地的 Google 衛(wèi)生間中,是 Google 盥洗室測(cè)試法 (Testing on the Toilet) 的一部分。您可以下載 打印專用版,以便在辦公區(qū)內(nèi)展示。
雖然代碼審查被視作提高軟件項(xiàng)目質(zhì)量的 重要工具,但 模糊不清或嚴(yán)苛的代碼審查評(píng)論可能會(huì)帶來不利后果:導(dǎo)致審查進(jìn)度緩慢、阻礙相關(guān)代碼審查,其他代碼貢獻(xiàn)者或同事的負(fù)面情緒甚至負(fù)面看法。
請(qǐng)參考以下技巧,讓代碼審查評(píng)論更易被接受。
作為代碼審查者或作者:
應(yīng)該:換位思考。 無論是作為代碼作者還是審查者,由于身份/背景不同,您的代碼部署或?qū)彶榻ㄗh往往會(huì)與對(duì)方的理解有歧義。多提問題,便于彼此理解。 應(yīng)該:提供基本原理或上下文 ,例如最佳實(shí)踐文檔、風(fēng)格指南或設(shè)計(jì)文檔。這有助于其他人理解您的做法,或者為您提供指導(dǎo)。 應(yīng)該:考慮他人會(huì)如何解讀評(píng)論。 注意,夸張語句、笑話以及表情符號(hào)可能會(huì)造成誤解。代碼作者 不應(yīng)該:
我喜歡用縮寫,所以我不會(huì)修改的(你咬我?。?。
代碼作者 應(yīng)該:
最佳實(shí)踐建議使用某些術(shù)語的縮寫,我不太確定應(yīng)該如何遵守這個(gè)規(guī)范,有什么好的建議嗎?
不應(yīng)該:指責(zé)別人 。應(yīng)該僅針對(duì) 代碼 進(jìn)行討論。認(rèn)為評(píng)論摻雜個(gè)人感情(比如使用了“你”或“你的”)會(huì)干擾您改良代碼。審查者 不應(yīng)該:
你為什么要用這種方法?你這樣增加了不必要的復(fù)雜性。
審查者 應(yīng)該:
這種并發(fā)模型好像增加了系統(tǒng)復(fù)雜性,并且沒有任何可見的性能改善。
不應(yīng)該:使用嚴(yán)苛的表述 。帶有負(fù)面語氣的評(píng)論并沒有多大幫助。例如,據(jù)調(diào)查顯示,對(duì)于代碼作者而言,僅在 57% 的情況下他們會(huì)考慮或接受非常負(fù)面的評(píng)論,而在 79% 的情況下他們都會(huì)考慮或接受中立的評(píng)論。作為代碼審查者:
應(yīng)該:提供具體且可執(zhí)行的反饋 。如果沒有具體的建議,可以讓作者闡述這樣做的原因,這種做法有時(shí)會(huì)很有幫助。審查者 不應(yīng)該:
我不懂這個(gè)(
)
審查者 應(yīng)該:
如果這是一個(gè)優(yōu)化方法的話,
你能加一些關(guān)于這個(gè)方法的介紹嗎?
應(yīng)該:清晰地標(biāo)明必須注意和選擇性注意的評(píng)論 ,可以用諸如“Nit”或“Optional”等前綴。這樣可以讓代碼作者更好地了解審查者的期望。作為代碼作者:
應(yīng)該:闡述代碼或回復(fù)審查者的評(píng)論 ,以示對(duì)評(píng)論的回應(yīng)。否則,審查者可能會(huì)認(rèn)為您不愿意對(duì)代碼實(shí)施改進(jìn)。代碼作者 不應(yīng)該:
某些情況下是有用的,不過不是這里(
)
代碼作者 應(yīng)該:
我加了一些內(nèi)容,解釋了這樣做的必要性。
應(yīng)該:在不認(rèn)同反饋時(shí)說明您所用方法的優(yōu)勢(shì) 。如果雙方無法達(dá)成共識(shí),可以遵循 Google 關(guān)于如何在代碼審查中 解決意見沖突 的指導(dǎo)。如果您想詳細(xì)了解 本文討論 的相關(guān)內(nèi)容,請(qǐng)參閱以下文檔。這些文檔深入探討了這篇文章中提及的許多主題: 返回搜狐,查看更多
代碼健康 https://testing.googleblog.com/2017/04/code-health-googles-internal-code.html Google 盥洗室測(cè)試法 https://testing.googleblog.com/2007/01/introducing-testing-on-toilet.html 下載打印專用版 https://docs.google.com/document/d/1_Gljf1TMTV2WPsiXCdk8oIkiq6uiajN_IqGdlD7u3Mc/edit? usp=sharing 解決意見沖突 https://google.github.io/eng-practices/review/reviewer/standard.html#conflicts責(zé)任編輯: