Google是如何做代碼審查的?代碼審查有什么作用?
來源:易賢網(wǎng) 閱讀:1083 次 日期:2016-07-14 10:34:54
溫馨提示:易賢網(wǎng)小編為您整理了“Google是如何做代碼審查的?代碼審查有什么作用?”,方便廣大網(wǎng)友查閱!

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

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

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

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

很顯然:在代碼提交前,用第二群眼睛檢查一遍,防止bug混入。

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

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

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

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

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

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

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

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

不,你不需要。

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

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

以上就是對Google是如何做代碼審查的以及代碼審查有什么作用全部內(nèi)容的介紹,更多內(nèi)容請繼續(xù)關(guān)注腳本之家!

更多信息請查看網(wǎng)站運(yùn)營
易賢網(wǎng)手機(jī)網(wǎng)站地址:Google是如何做代碼審查的?代碼審查有什么作用?
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)站運(yùn)營

2025國考·省考課程試聽報(bào)名

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)