谷歌是如何做代碼審查的

      作者:
      2011-08-04
      2729
      關(guān)鍵字:谷歌,編程,審查,代碼,網(wǎng)頁,欣賞,如何,的

      本文的作者 Mark CC

      在上一篇文章中提到過,我已經(jīng)不在Google工作了。我還沒有想清楚應(yīng)該去哪里——有兩三個(gè)非常好的工作機(jī)會(huì)擺在我面前。因?yàn)樵谶@段做決定時(shí)間里,我不再受雇于任何人,我想可以寫一些專業(yè)性的東西,一些很有趣,但也會(huì)在同事和管理工作中導(dǎo)致關(guān)系緊張的東西。

        Google是一個(gè)非常優(yōu)秀的公司。他們做出了很多令人稱贊的東西——既是公司外部,人們可以看到的東西,也是公司內(nèi)部。有一些在公司內(nèi)部并不屬于保密的事情,在外部并沒有給予足夠廣泛的討論。這就是我今天要說的。

        讓Google的程序如此優(yōu)秀的一個(gè)最重要的事情看起來是非常的簡(jiǎn)單:代碼審查。并不是只有Google做這個(gè)事情——代碼審查已經(jīng)被廣泛的認(rèn)可為一種非常好的做法,很多人都在這樣做。但我還沒有看到第二家這樣大的公司能把這種事情運(yùn)用的如此普遍。在Google,任何產(chǎn)品、任何項(xiàng)目的代碼,在沒有經(jīng)過有效的代碼審查前是不能提交到代碼庫(kù)里的。

        所有人都要經(jīng)過代碼審查。并且很正規(guī)的:這種事情應(yīng)該成為任何重要的軟件開發(fā)工作中一個(gè)基本制度。并不單指產(chǎn)品程序——所有東西。它不需要很多的工作,但它的效果是巨大的。

        從代碼審查里能得到什么?

        很顯然:在代碼提交前,用第二群眼睛檢查一遍,防止bug混入。這是對(duì)其最常見的理解,是對(duì)代碼審查的好處的最廣泛的認(rèn)識(shí)。但是,依我的經(jīng)驗(yàn)來看,這反倒是它最不重要的一點(diǎn)。人們確實(shí)在代碼審查中找到了bug??墒?,這些在代碼審查中能發(fā)現(xiàn)的絕大部分bug,很顯然,都是微不足道的bug,程序的作者花幾分鐘的時(shí)間就能發(fā)現(xiàn)它們。真正需要花時(shí)間去發(fā)現(xiàn)的bug不是在代碼審查里能找到的。

        代碼審查的最大的功用是純社會(huì)性的。如果你在編程,而且知道將會(huì)有同事檢查你的代碼,你編程態(tài)度就完全不一樣了。你寫出的代碼將更加整潔,有更好的注釋,更好的程序結(jié)構(gòu)——因?yàn)槟阒?,那個(gè)你很在意的人將會(huì)查看你的程序。沒有代碼審查,你知道人們最終還是會(huì)看你的程序。但這種事情不是立即發(fā)生的事,它不會(huì)給你帶來同等的緊迫感,它不會(huì)給你相同的個(gè)人評(píng)判的那種感受。

        還有一個(gè)非常重要的好處。代碼審查能傳播知識(shí)。在很多的開發(fā)團(tuán)隊(duì)里,經(jīng)常每一個(gè)人負(fù)責(zé)一個(gè)核心模塊,每個(gè)人都只關(guān)注他自己的那個(gè)模塊。除非是同事的模塊影響了自己的程序,他們從不相互交流。這種情況的后果是,每個(gè)模塊只有一個(gè)人熟悉里面的代碼。如果這個(gè)人休假或——但愿不是——辭職了,其他人則束手無策。通過代碼審查,至少會(huì)有兩個(gè)人熟悉這些程序——作者,以及審查者。審查者并不能像程序的作者一樣對(duì)程序十分了解——但他會(huì)熟悉程序的設(shè)計(jì)和架構(gòu),這是極其重要的。

        當(dāng)然,沒有什么事情能簡(jiǎn)單的做下來的。依我的經(jīng)驗(yàn),在你能正確的進(jìn)行代碼審查前,你需要花時(shí)間鍛煉學(xué)習(xí)。我發(fā)現(xiàn)人們?cè)诖a審查時(shí)經(jīng)常會(huì)犯一些錯(cuò)誤,導(dǎo)致不少麻煩——尤其在一些缺乏經(jīng)驗(yàn)的審查者中經(jīng)常的出現(xiàn),他們給了人們一個(gè)很糟的代碼審查的體驗(yàn),成為了人們接受代碼審查制度的一個(gè)障礙。

        最重要的一個(gè)原則:代碼審查用意是在代碼提交前找到其中的問題——你要發(fā)現(xiàn)是它的正確。在代碼審查中最常犯的錯(cuò)誤——幾乎每個(gè)新手都會(huì)犯的錯(cuò)誤——是,審查者根據(jù)自己的編程習(xí)慣來評(píng)判別人的代碼。

        對(duì)于一個(gè)問題,通常我們能找出十幾種方法去解決。對(duì)于一種解決方案,我們能有百萬種編碼方案來實(shí)現(xiàn)它。作為一個(gè)審查者,你的任務(wù)不是來確保被審查的代碼都采用的是你的編碼風(fēng)格——因?yàn)樗豢赡芨銓懙囊粯印W鳛橐欢未a的審查者的任務(wù)是確保由作者自己寫出的代碼是正確的。一旦這個(gè)原則被打破,你最終將會(huì)倍感折磨,深受挫折——這可不是我們想要的結(jié)果。

        問題在于,這種錯(cuò)誤是如此的普遍而易犯。如果你是個(gè)程序員,當(dāng)你遇到一個(gè)問題,你能想到一種解決方案——你就把你想到的方案作為標(biāo)準(zhǔn)答案。但事情不是這樣的——作為一個(gè)好的審查者,你需要明白這個(gè)道理。

        代碼審查的第二個(gè)易犯的毛病是,人們覺得有壓力,感覺非要說點(diǎn)什么才好。你知道作者用了大量的時(shí)間和精力來實(shí)現(xiàn)這些程序——不該說點(diǎn)什么嗎?

        不,你不需要。

        只說一句“哇,不錯(cuò)呀”,任何時(shí)候都不會(huì)不合適。如果你總是力圖找出一點(diǎn)什么東西來批評(píng),你這樣做的結(jié)果只會(huì)損害自己的威望。當(dāng)你不厭其煩的找出一些東西來,只是為了說些什么,被審查人就會(huì)知道,你說這些話只是為了填補(bǔ)寂靜。你的評(píng)論將不再被人重視。

        第三是速度。你不能匆匆忙忙的進(jìn)行一次代碼審查——但你也要能迅速的完成。你的同伴在等你。如果你和你的同事并不想花太多時(shí)間進(jìn)行代碼復(fù)查,你們很快的完成,那被審查者會(huì)覺得很沮喪,這種代碼審查帶來的只有失望的感覺。就好象是打攪了大家,使大家放下手頭的工作來進(jìn)行審查。事情不該是這樣。你并不需要推掉手頭上的任何事情來做代碼審查。但如果中途耽誤了幾個(gè)小時(shí),你中間還要休息一會(huì),喝杯茶,沖個(gè)澡,或談會(huì)兒閑話。當(dāng)你回到審查現(xiàn)場(chǎng),你可以繼續(xù)下去,把事情做完。如果你真是這樣,我想沒有人愿意在那干等著你。

      0
      5
      分享到:

      0

      喜歡他,就推薦他上首頁吧^_^

      推薦閱讀

      ×

      賽事服務(wù)聯(lián)系方式

      0371-86068866

      4008887269

      cndesign@163.com

      好的,我知道了

      官方微信

      聯(lián)系我們

      • QQ:33143335 QQ:1904200230
      • 電話:18569912460
      • 投稿:cndesign@163.com
      • 地址:鄭州市國(guó)家大學(xué)科技園東區(qū)9號(hào)樓2層

      版權(quán)信息

        移動(dòng) Android 版 豫 ICP 備16038122號(hào)-2 豫公網(wǎng)安備 41019702002261號(hào)

      主站蜘蛛池模板: 亚洲av色香蕉一区二区三区蜜桃| 亚洲夜夜欢A∨一区二区三区| 国产精品揄拍一区二区| 无码国产精品一区二区免费vr| 精品一区二区久久久久久久网精| 精品福利一区二区三区精品国产第一国产综合精品 | 精品人无码一区二区三区| 国产一区高清视频| 久久久久人妻一区二区三区vr| 精品无码中出一区二区| 97久久精品无码一区二区天美 | 福利片免费一区二区三区| 全国精品一区二区在线观看| 国产精品亚洲午夜一区二区三区 | 3d动漫精品啪啪一区二区免费| 亚洲AV无码一区二区三区牛牛| 国产精品一区二区综合| 国产激情一区二区三区小说| 亚洲视频一区在线观看| 午夜视频在线观看一区二区| 激情内射亚州一区二区三区爱妻| 国产伦精品一区二区三区无广告 | 国产一区二区三区无码免费| 久夜色精品国产一区二区三区| 成人影片一区免费观看| 四虎永久在线精品免费一区二区| 性色av无码免费一区二区三区| 冲田杏梨高清无一区二区| 无码aⅴ精品一区二区三区浪潮| 日本精品3d动漫一区二区| 免费无码一区二区三区蜜桃| 中文字幕av日韩精品一区二区| 亚洲一区二区久久| 日本强伦姧人妻一区二区| 亚洲国产视频一区| 中文字幕一区二区区免| 人妻夜夜爽天天爽一区| 人妻无码久久一区二区三区免费| 精品不卡一区中文字幕| 国产乱人伦精品一区二区| 一区二区视频传媒有限公司|