CodeReview是什么呢?
什么是codereview?字面意思是審查您的代碼,Talkis便宜,showme代碼是它的意思。越來(lái)越多的公司要求研發(fā)團(tuán)隊(duì)在代碼開(kāi)發(fā)過(guò)程中進(jìn)行CODEREVIEW(CR)。在確保代碼質(zhì)量的同時(shí),它促進(jìn)了團(tuán)隊(duì)成員之間的溝通,并提交了代碼級(jí)別。然而,近年來(lái),CR文化的促進(jìn)只開(kāi)始了。像亞馬遜和谷歌這樣的外國(guó)公司需要在代碼合并到主分支機(jī)構(gòu)時(shí)完成CR。國(guó)內(nèi)互聯(lián)網(wǎng)比國(guó)外延遲,加上一個(gè)略微復(fù)雜的漢語(yǔ)特征(我對(duì)自己的其他人寫的壞代碼不太尷尬......)。早期Cr更多的形式。現(xiàn)在隨著互聯(lián)網(wǎng)流量的迅速增加,必須保證代碼質(zhì)量,以確保業(yè)務(wù)的高穩(wěn)定性和高可用性,因此CR開(kāi)始成為企業(yè)發(fā)展的必備現(xiàn)象。簡(jiǎn)單地說(shuō),Cr就像吃早餐。如果你不吃它,你的身體似乎似乎并不糟糕。因此,由于忙碌的工作或睡覺(jué)后,每個(gè)人都能忽視早餐或只是吃飯和吃東西來(lái)應(yīng)對(duì)。然而,由于身體在高負(fù)荷和高壓下逐漸變得有點(diǎn)不同,因此每個(gè)人都開(kāi)始意識(shí)到“身體是革命的首都”。必須吃早餐,必須始終如一地食用。這對(duì)身體最有利。更進(jìn)一步,以力量更好地做到。但為什么你吃早餐,當(dāng)你吃它時(shí),你是如何吃它的,你吃的東西也很優(yōu)雅。就像當(dāng)Cr會(huì)這樣做時(shí),它將如何做到,應(yīng)該如何注重,也很細(xì)膩。
為什么? - 你為什么需要審查? CR是代碼標(biāo)準(zhǔn)化的保證,帶來(lái)知識(shí)傳播和團(tuán)隊(duì)建設(shè)。有些人可能認(rèn)為代碼審查是找到錯(cuò)誤,并且不需要代碼審查。事實(shí)上,這不是這種情況。從編碼人的角度來(lái)看,他們每天都忙于編碼,交貨時(shí)間即將推出。為了快速交付,要求減少,未寫入單元測(cè)試用例,并且在編碼時(shí)的性能和安全性的角度下不考慮更好的實(shí)施。但是,雖然代碼按時(shí)提交,但它不是一種高質(zhì)量的代碼。在運(yùn)營(yíng)中可能存在問(wèn)題,并且人們難以接管。如果有CR,認(rèn)為您的代碼將由您的同事和領(lǐng)導(dǎo)審查,您還會(huì)降低要求嗎?我必須加班完成以質(zhì)量和數(shù)量的代碼寫作。此外,在CR的過(guò)程中,有高級(jí)老年人解釋您的代碼設(shè)計(jì)思想和算法。這絕對(duì)比降低你的頭腦更快,思考進(jìn)步。 CR.判斷的原因就像和家人和朋友一起吃早餐。當(dāng)你孤獨(dú)時(shí),你會(huì)醒來(lái)醒來(lái)或匆忙吃東西。如果您的家人或朋友與您同住,您會(huì)考慮您的家庭的健康和您的家人對(duì)您的擔(dān)憂。 ,你還不會(huì)早起吃早餐甚至喝早餐?什么時(shí)候? - 審查是什么?每個(gè)代碼合并(PullRequest / Merge Request)是最好的時(shí)間。 PullRequest意味著您無(wú)權(quán)提交您寫入特定倉(cāng)庫(kù)或分支的代碼。您可以請(qǐng)授權(quán)人員將您從源倉(cāng)庫(kù)的源分支中提交的代碼合并到目標(biāo)倉(cāng)庫(kù)的目標(biāo)分支中。每個(gè)要求更改應(yīng)通過(guò)提交合并請(qǐng)求盡快合并到主分支機(jī)構(gòu)中,因此可以盡早找到代碼寫作中的問(wèn)題。我們現(xiàn)在所倡導(dǎo)的持續(xù)整合也是相同的想法。不要等到所有要求的開(kāi)發(fā)和合并。一次提交大量代碼也會(huì)為審稿人帶來(lái)巨大的負(fù)擔(dān)。修改一次并提交一次。當(dāng)然,這份提交也是一個(gè)質(zhì)量提交,至少在提交之前,我已經(jīng)完全審查并通過(guò)了單位測(cè)試。 Cr評(píng)論的時(shí)間就像做早餐一樣。你必須嘗試用正確的原料和煮熟,甜蜜和咸的東西吃它,然后讓別人一起吃飯。如何? - 怎么判斷?選擇合適的工具,與合適的開(kāi)發(fā)過(guò)程合作,選擇正確的形式非常重要。對(duì)于工具,許多代碼托管工具,如Github,Gitlab,Alibaba云云和騰訊工作人員Bee都有自己的CR工具,而開(kāi)發(fā)團(tuán)隊(duì)可以根據(jù)自己的情況選擇。對(duì)于開(kāi)發(fā)過(guò)程,當(dāng)前流行的Gitflow,Trunk開(kāi)發(fā)模型和Fork開(kāi)發(fā)模型所有支持PullRequest / MergeRequest當(dāng)代碼合并到主分支時(shí)。
出于適當(dāng)?shù)谋砀瘢ㄔ诰€審查,離線審查和特殊處理,為輕量級(jí)CR(如小型功能模塊的開(kāi)發(fā),小于500行代碼),您可以直接邀請(qǐng)代碼托管工具人員中的同一組高級(jí)人士審查代碼并與反饋結(jié)合進(jìn)行更改;為了開(kāi)發(fā)大型功能模塊或架構(gòu)的變化,團(tuán)隊(duì)成員可以組織用于離線評(píng)論。開(kāi)發(fā)人員談?wù)撟约旱脑O(shè)計(jì)邏輯,審稿人提供意見(jiàn),代碼審核行按行;對(duì)于一些緊急情況,例如需要迫切地推出的線路上的緊急錯(cuò)誤,但沒(méi)有人在那里,可以在此時(shí)進(jìn)行緊急合并,但之后仍然需要添加CR。 CR.評(píng)估方法就像吃早餐。如果你是一個(gè)人,它可以更簡(jiǎn)單,牛奶面包可以補(bǔ)充必要的蛋白質(zhì);如果是一個(gè)家庭在一起,那么它肯定會(huì)更富裕。饅頭,粥,大豆牛奶,油炸面團(tuán)棒和泡菜都會(huì)有一點(diǎn),所有谷物都會(huì)補(bǔ)充;如果是緊急火車或飛行,你可以跳過(guò)吃它并等到你上火車或飛機(jī)來(lái)彌補(bǔ)它。什么? - 審查是什么? CR評(píng)論什么?在CR中,我們審查了標(biāo)準(zhǔn)化,一致性,編碼樣式,代碼的安全問(wèn)題,代碼冗余和代碼的功能性能設(shè)計(jì)。關(guān)于標(biāo)準(zhǔn)化,在Java中,我們將檢查后臺(tái)線程是否具有對(duì)主線程的同步訪問(wèn),無(wú)論是功能和變量命名是否準(zhǔn)確,是否組件分層是合理的,無(wú)論是合理提取的常用邏輯是否合理,是文件組織是否是合理的邏輯合理,無(wú)論函數(shù)評(píng)論是清晰全面的,代碼的可讀性都很好,無(wú)論是更優(yōu)雅的寫作方式,程序設(shè)計(jì)是否滿足單個(gè)原理,開(kāi)放和封閉的原理。為了完整性,我們檢查代碼是否完全實(shí)現(xiàn)了設(shè)計(jì)文檔中提出的功能要求,無(wú)論是否已創(chuàng)建所需的數(shù)據(jù)庫(kù),以及它是否包含正確的初始化數(shù)據(jù)。對(duì)于正確性,我們檢查是否正確定義并使用了所有變量,無(wú)論是否使用未定義的變量,是否存在明顯或潛在的邏輯錯(cuò)誤,無(wú)論它們都意外落入無(wú)限循環(huán),是否已經(jīng)避免了無(wú)限遞歸。對(duì)于穩(wěn)健性,我們檢查代碼是否與陣列折疊或內(nèi)存溢出的例外處理。為了重新使用,我們檢查組件是可重復(fù)使用的以及是否有重復(fù)代碼。為了可伸縮性,我們檢查功能組件是否易于展開(kāi)以及是否可以重用代碼。為了安全,我們檢查是否執(zhí)行身份驗(yàn)證,授權(quán),輸入數(shù)據(jù)驗(yàn)證,避免安全威脅,如SQL注入和跨站點(diǎn)腳本(XSS),加密敏感數(shù)據(jù)(密碼,信用卡信息等)以及是否導(dǎo)入依賴項(xiàng)是安全的,將成熟,公共組件和工具函數(shù)的變化會(huì)影響其他業(yè)務(wù)嗎?可以看出CR不是一個(gè)簡(jiǎn)單的事情。一個(gè)好的代碼和良好的工程師必須被鍛煉。 CR的評(píng)論內(nèi)容就像早餐一樣。我們將注意哪些成分在營(yíng)養(yǎng)方面是否均衡,無(wú)論烹飪是合適的,無(wú)論是含量是否足夠,無(wú)論是成分都是安全的,無(wú)論是清潔,無(wú)論是清潔的,無(wú)論是清潔的,衛(wèi)生,無(wú)論價(jià)格合適, 等等。不要說(shuō)經(jīng)營(yíng)迭代太多,需求太多,發(fā)射時(shí)間緊張。沒(méi)有時(shí)間做Cr。不要為您的丑陋代碼制作華麗的借口。如果您沒(méi)有時(shí)間做好準(zhǔn)備,您將有很多時(shí)間來(lái)處理錯(cuò)誤和投訴。 。就像不要說(shuō)你沒(méi)有時(shí)間吃早餐,工作太忙或困倦,你現(xiàn)在的拯救時(shí)間將被未來(lái)的各種疾病令人作嘔。因此,如果您的團(tuán)隊(duì)沒(méi)有完成CR,并且CR并不好好,您必須推動(dòng)您的領(lǐng)導(dǎo)者找到根本原因,并實(shí)施CR。對(duì)于質(zhì)量代碼,一切都值得。就像那樣,如果你還沒(méi)有享用美味的早餐,那么從現(xiàn)在吃早餐時(shí),就會(huì)為健康的身體值得一切值得。
?