<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>

            谷歌是如何做代碼審查的

            發(fā)表于:2014-04-02來(lái)源:外刊IT評論作者:不詳點(diǎn)擊數: 標簽:代碼審查
            在上一篇文章中提到過(guò),我已經(jīng)不在Google工作了。我還沒(méi)有想清楚應該去哪里—有兩三個(gè)非常好的工作機會(huì )擺在我面前。因為在這段做決定時(shí)間里,我不再受雇于任何人,我想可以寫(xiě)一些專(zhuān)業(yè)性的東西,一些很有趣,但也會(huì )在同事和管理工作中導致關(guān)系緊張的東西。

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

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

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

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

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

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

              代碼審查的最大的功用是純社會(huì )性的。如果你在編程,而且知道將會(huì )有同事檢查你的代碼,你編程態(tài)度就完全不一樣了。你寫(xiě)出的代碼將更加整潔,有更好的注釋?zhuān)玫某绦蚪Y構——因為你知道,那個(gè)你很在意的人將會(huì )查看你的程序。沒(méi)有代碼審查,你知道人們最終還是會(huì )看你的程序。但這種事情不是立即發(fā)生的事,它不會(huì )給你帶來(lái)同等的緊迫感,它不會(huì )給你相同的個(gè)人評判的那種感受。

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

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

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

              對于一個(gè)問(wèn)題,通常我們能找出十幾種方法去解決。對于一種解決方案,我們能有百萬(wàn)種編碼方案來(lái)實(shí)現它。作為一個(gè)審查者,你的任務(wù)不是來(lái)確保被審查的代碼都采用的是你的編碼風(fēng)格——因為它不可能跟你寫(xiě)的一樣。作為一段代碼的審查者的任務(wù)是確保由作者自己寫(xiě)出的代碼是正確的。一旦這個(gè)原則被打破,你最終將會(huì )倍感折磨,深受挫折——這可不是我們想要的結果。

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

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

              不,你不需要。

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

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

            原文轉自:http://www.vaikan.com/things-everyone-should-do-code-review/

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>