代碼審查的重要性

puye 9年前發布 | 5K 次閱讀 代碼

代碼審查的重要性

英文原文:The Importance of Code Reviews

前些天有人寫了一篇超精彩的博客貼子,是關于之所以要將優秀的程序員從平庸的群體中挑選出來的重要性。這篇文章寫得真的很好,因為它講述的情況和產生的可怕后果,在我的職業生涯中我已經見得太多太多了,不過這其實是很容易阻止的。

作者講述了這樣一種現實情況——一家公司需要實施某個非常重要的模塊,但是此時它的高級開發人員 Mr Senior 很忙。因此,他們將模塊給了新手 Mr Newbie——他花了 4 個月來寫模塊,兩個星期的時間來修復 QA 發現的大量 bug,浪費了技術支持無數個小時用于揪出 QA 沒有發現的 bug,甚至導致客戶以軟件滿是 bug 為由取消了合同,等等。最終,高級程序員站出來,用了一個月的時間從頭重寫,然后在經過 QA 快速的檢查之后,一個幾乎沒有 bug 的版面世了,所有人都很滿意。

結局很圓滿,沒錯,但是不知道你看出來沒有,其實所有的問題本來都是可以避免的,只要這家公司能夠在日常研發中引入代碼審查程序。

現在,在我解釋如何避免這些問題之前,我想先描述一下我認為一個好的代碼審查程序應該是什么樣的。所有它需要做的就是遵循以下兩個簡單的原則:

  • 沒有經過審查的代碼不入主分支。哪怕是一行提交,哪怕是最高級開發人員寫的代碼,都不能例外。
  • 每個人都可以審查代碼。即使是最初級的程序員,也可以參與進來。

這兩個原則貌似有違直覺。你或許要問了:“為什么不能相信高級程序員編寫的高質量代碼?”又或是,“如何相信新手程序員審查后的代碼確保是 OK 的?”

第一個問題其實是不應該問的,因為即使是最資深最高級的開發人員也會時不時地犯錯。雖然手工的代碼審查永遠不可能像自動化測試和腳本化的手動 QA 那樣嚴謹,但是代碼審查執行所需的時間更短,并且很容易發現自動化測試理解不了的問題——通常是位于架構層面的問題——這要是拖到以后修復就會變得很難很 難。

至于第二個你不信任新手程序員的問題——答案很簡單。多一雙眼睛來檢查代碼總是令人喜聞樂見的,但這也不是主要原因。我們真正想要實現的目的是 提高初級程序員的技能。在審查時,他可以知道這些高級開發人員是如何編寫代碼的。最重要的是,這將有助于他理解如何批判性地閱讀別人的代碼,一兩個月后, 他甚至能夠審查自己的代碼,從而提高了他最終提交到存儲庫中的代碼質量。

現在讓我們回過頭去再看前面作者提到的案例,我們可以發現,如果 Mr Newbie 寫的代碼能夠拿給 Mr Senior 去審查,那么他很多初始的錯誤在他第一次提交時就會被發現,甚至他還可以向 Mr Senior 請教和討論模塊,從而創造出一個更好的架構,也許都不用像原來那樣花上 4 個月的時間就可以完成任務。此外,Mr Newbie 由于知道需要經過高級開發人員的眼睛,因而在寫代碼時會嚴格要求自己,用批判的眼光看自己的代碼。而最重要的好處是,整個過程會教會 Mr Newbie 很多關于 Mr Senior 思考的方法,也許等到構建下一個模塊時,他已經成為了 Mr Intermediate(中級開發人員)。 

譯文鏈接:http://www.codeceo.com/article/importance-of-code-reviews.html

翻譯作者:碼農網 – 小峰

 本文由用戶 puye 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!