亚洲日本欧美日韩高观看,性高湖久久久久久久久,亚洲av成人噜噜无码网站,亚洲欧美日韩国产一区二区动图,亚洲欧美日韩国产精品一区二区


學(xué)AI,好工作 就找北大青鳥
關(guān)注小青 聽(tīng)課做題,輕松學(xué)習(xí)
周一至周日
4000-9696-28

CodeReview的靈魂五問(wèn)

來(lái)源:北大青鳥總部 2023年04月24日 09:49

摘要: CodeReview就是對(duì)你的代碼進(jìn)行評(píng)審,talkis cheap,showme the code就是這意思。越來(lái)越多的企業(yè)都要求研發(fā)團(tuán)隊(duì)在代碼的開(kāi)發(fā)過(guò)程中要進(jìn)行CodeReview(簡(jiǎn)稱CR)。來(lái)看下關(guān)于CodeReview的靈魂五問(wèn)。

CodeReview是什么呢?字面意思,就是對(duì)你的代碼進(jìn)行評(píng)審,talkis cheap,showme the code就是這意思。越來(lái)越多的企業(yè)都要求研發(fā)團(tuán)隊(duì)在代碼的開(kāi)發(fā)過(guò)程中要進(jìn)行CodeReview(簡(jiǎn)稱CR),在保障代碼質(zhì)量的同時(shí),促進(jìn)團(tuán)隊(duì)成員之間的交流,提交代碼水平。

不過(guò)CR文化的推崇卻是近些年才開(kāi)始的,國(guó)外像Amazon、Google的大廠要求代碼合并進(jìn)主干分支時(shí)必須要做CR,國(guó)內(nèi)互聯(lián)網(wǎng)起步比國(guó)外晚,再加上略微復(fù)雜的中國(guó)特色(不太好意思當(dāng)面評(píng)論別人的代碼寫的不好….),早期的CR更多流于形式,現(xiàn)在隨著互聯(lián)網(wǎng)流量的劇增,必須要保障代碼質(zhì)量才能保障業(yè)務(wù)高穩(wěn)定高可用,所以CR開(kāi)始成為企業(yè)開(kāi)發(fā)中必須要做的事情。

簡(jiǎn)單來(lái)說(shuō),CR就像吃早餐一樣,不吃好像不見(jiàn)得對(duì)身體會(huì)有什么不好,所以大家因?yàn)楣ぷ髅蛩瘧杏X(jué)等原因,忽略了早餐,或者隨便吃吃應(yīng)付。

但隨著身體在高負(fù)荷、高壓力的情況下逐漸有些異樣,大家開(kāi)始意識(shí)到了“身體是革命的本錢”,早餐必須要吃,必須堅(jiān)持吃,這樣對(duì)身體是最有益的,身體好才有力氣走的更遠(yuǎn)、做的更好。不過(guò)早餐為什么吃,什么時(shí)候吃,怎么吃,吃什么也是有考究的。就像CR什么時(shí)候做,怎么做,該注意什么也是有考究的。


Why?--為什么需要評(píng)審?

CR是代碼規(guī)范性的保障、帶來(lái)知識(shí)傳播、團(tuán)隊(duì)建設(shè)。有的人可能覺(jué)得代碼評(píng)審就是找出錯(cuò)誤的,覺(jué)得代碼評(píng)審沒(méi)有必要,實(shí)際上并不是這樣。

從編碼者的角度來(lái)說(shuō),每天都忙于緊張的coding,交付時(shí)間馬上到了,為了快速交付于是降低了要求,不寫單元測(cè)試用例,coding的時(shí)候也沒(méi)有從性能、安全角度去考慮更好的實(shí)現(xiàn),雖然按期提交了代碼,然而卻不是一份高質(zhì)量的代碼,在運(yùn)行中可能出問(wèn)題、后來(lái)人接手也不好接。

如果有CR的存在,想到你的代碼即將被你的同事、領(lǐng)導(dǎo)進(jìn)行評(píng)審,你還會(huì)降低要求嗎?肯定加班加點(diǎn)保質(zhì)保量的完成代碼編寫呀。

另外在CR的過(guò)程中有資深的前輩對(duì)你的代碼設(shè)計(jì)思路、算法進(jìn)行講解,這肯定比自己低頭琢磨進(jìn)步快啊。

CR評(píng)審的理由就像和家人朋友一起吃早餐一樣,一個(gè)人的時(shí)候起晚了或者著急就不吃了,而如果你家人或朋友與你一起居住時(shí),一想到家人的健康、家人對(duì)你的擔(dān)憂,你還會(huì)不早點(diǎn)起床吃早餐、甚至做早餐嗎?


When?—什么時(shí)候評(píng)審?

每一次的代碼合并(PullRequest/Merge Request)就是最好的時(shí)機(jī)。PullRequest就是說(shuō)你沒(méi)有權(quán)限往一個(gè)特定的倉(cāng)庫(kù)或分支提交你寫的代碼,通過(guò)請(qǐng)求有權(quán)限的人將你提交的代碼從你的源倉(cāng)庫(kù)的源分支合并進(jìn)目標(biāo)倉(cāng)庫(kù)的目標(biāo)分支。

每個(gè)需求的改動(dòng)都應(yīng)當(dāng)盡快提合并請(qǐng)求合并到主分支,這樣可以盡早的發(fā)現(xiàn)代碼編寫中的問(wèn)題。我們現(xiàn)在所倡導(dǎo)的持續(xù)集成也是這個(gè)思想,不要等到所有的需求都開(kāi)發(fā)完在進(jìn)行合并,一次提交大量的代碼給評(píng)審的人也帶來(lái)很大負(fù)擔(dān),修改一次提交一次。當(dāng)然這個(gè)提交也是要有質(zhì)量的提交,至少在提交之前自己已經(jīng)全面review、通過(guò)了單元測(cè)試。

CR評(píng)審的時(shí)間就像做早餐一樣,必須自己都嘗試生熟合適、甜咸得當(dāng)再叫別的人一起來(lái)吃。


How?—怎么評(píng)審?

選擇合適的工具、配合合適的開(kāi)發(fā)流程、選取適當(dāng)?shù)男问竭@三者非常重要。

對(duì)于工具來(lái)說(shuō),目前很多代碼托管工具如Github、Gitlab、阿里云云效、騰訊工蜂等都自帶了CR工具,開(kāi)發(fā)團(tuán)隊(duì)可根據(jù)自己情況選擇。

對(duì)于開(kāi)發(fā)流程,目前流行的GitFlow、主干開(kāi)發(fā)模式、fork開(kāi)發(fā)模式都支持在將代碼合并到master分支時(shí)需要發(fā)起PullRequest/MergeRequest。對(duì)于適當(dāng)?shù)男问?,包含線上評(píng)審、線下評(píng)審、特殊處理三種,對(duì)于輕量級(jí)的CR(比如小功能模塊的開(kāi)發(fā)、不超過(guò)500行的代碼)可直接在代碼托管工具中邀請(qǐng)同組的人或資深的人對(duì)代碼進(jìn)行評(píng)審,結(jié)合反饋意見(jiàn)進(jìn)行修改;對(duì)于大功能模塊的開(kāi)發(fā)或是涉及架構(gòu)變動(dòng),可組織團(tuán)隊(duì)人員線下進(jìn)行評(píng)審,開(kāi)發(fā)者講自己的設(shè)計(jì)邏輯,評(píng)審人給出意見(jiàn),一行一行的進(jìn)行代碼評(píng)審;對(duì)于某些緊急情況,比如線上有緊急bug需緊急上線但又沒(méi)有人在,這時(shí)候可以進(jìn)行緊急合并,但事后仍然需要補(bǔ)上CR。

CR的評(píng)審方法就像吃早餐一樣,如果是一個(gè)人可以簡(jiǎn)單一些,牛奶面包補(bǔ)充必要的蛋白質(zhì)即可;如果是當(dāng)一家人在一起時(shí),必然會(huì)豐盛一些,包子、粥、豆?jié){、油條、咸菜都會(huì)來(lái)一點(diǎn),五谷雜糧都進(jìn)行補(bǔ)充;如果是緊急趕火車或趕飛機(jī)來(lái)不及吃時(shí),可以先不吃,等上了火車或飛機(jī)再補(bǔ)上。


What?—評(píng)審什么?

CR評(píng)審什么呢?在CR中我們對(duì)代碼的規(guī)范性、一致性、編碼風(fēng)格、代碼的安全問(wèn)題、代碼冗余、代碼的功能性能設(shè)計(jì)等進(jìn)行評(píng)審。

對(duì)于規(guī)范性,在java中我們會(huì)去check后臺(tái)線程是否有同步訪問(wèn)主線程、函數(shù)及變量命名是否準(zhǔn)確、組件分層是否合理,公共邏輯是否合理抽出,文件組織是否合理、函數(shù)注釋是否清晰全面、代碼的可讀性是否良好,是否有更優(yōu)雅的寫法、程序設(shè)計(jì)是否滿足單一原則,開(kāi)放封閉原則。

對(duì)于完整性,我們check代碼是否完全實(shí)現(xiàn)了設(shè)計(jì)文檔中提出的功能需求、是否創(chuàng)建了需要的數(shù)據(jù)庫(kù)、是否包含正確的初始化數(shù)據(jù)。

對(duì)于正確性,我們check是否所有的變量都被正確定義和使用,是否有未定義的變量被使用、是否有明顯的或潛在的邏輯bug、是否無(wú)意中陷入了死循環(huán)、是否避免了無(wú)窮遞歸。

對(duì)于健壯性,我們check代碼是否做了異常處理,是否存在數(shù)組塌陷、內(nèi)存溢出。

對(duì)于可重用性,我們check組件是否可復(fù)用、代碼是否存在重復(fù)。

對(duì)于可擴(kuò)展性,我們check功能組件是否便于擴(kuò)展、代碼是否可以下沉復(fù)用。

對(duì)于安全性,我們check是否進(jìn)行身份驗(yàn)證,授權(quán),輸入數(shù)據(jù)驗(yàn)證,避免諸如SQL注入和跨站腳本(XSS)等安全威脅,加密敏感數(shù)據(jù)(密碼,信用卡信息等)、引入的依賴項(xiàng)是否安全,成熟、公共組件&工具函數(shù)的改動(dòng),是否會(huì)影響其他業(yè)務(wù)??梢?jiàn)CR并不是一件簡(jiǎn)單的事情,一份好的代碼、好的工程師也必定是受過(guò)千錘百煉。

CR的評(píng)審內(nèi)容就像早餐一樣,我們會(huì)注意食材營(yíng)養(yǎng)搭配是否均衡、烹飪是否得當(dāng)、量是否足夠、食材是否安全、是否清洗干凈、就餐環(huán)境是否干凈衛(wèi)生、價(jià)格是否合適等等。

不要說(shuō)業(yè)務(wù)迭代太多、需求太多、上線時(shí)間緊張沒(méi)有時(shí)間做CR,不要為自己丑陋的代碼找華麗的借口,沒(méi)有時(shí)間好好做CR,那將有大量的時(shí)間用于焦頭爛額的處理故障和投訴。

就像不要說(shuō)自己沒(méi)時(shí)間吃早餐、工作太忙、太困一樣,現(xiàn)在省的時(shí)間將來(lái)有的是各種病讓你渾身不舒服。

所以如果你在的團(tuán)隊(duì)還沒(méi)有做CR、CR踐行的不好,一定要push你的leader找到根本的原因,將CR踐行下去,為了一份有質(zhì)量的代碼,一切都是值得的。

就像如果你現(xiàn)在還沒(méi)有好好的吃早餐,從現(xiàn)在開(kāi)始好好的吃早餐,為了一個(gè)健康的身體,一切都是值得的。


標(biāo)簽: codereview
報(bào)名優(yōu)惠
免費(fèi)試聽(tīng)
課程資料
官方微信
返回頂部
培訓(xùn)課程 熱門話題 站內(nèi)鏈接