日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Code Review如何有效的進(jìn)行

Code Review如何有效的進(jìn)行?我們一起來(lái)看看

Code Review如何有效的進(jìn)行


什么是Code Review?
Code Review代碼評(píng)審是指在軟件開(kāi)發(fā)過(guò)程中,通過(guò)對(duì)源代碼進(jìn)行系統(tǒng)性檢查的過(guò)程 。通常的目的是查找各種缺陷,包括代碼缺陷、功能實(shí)現(xiàn)問(wèn)題、編碼合理性、性能優(yōu)化等;保證軟件總體質(zhì)量和提高開(kāi)發(fā)者自身水平 。Code Review是輕量級(jí)代碼評(píng)審,相對(duì)于正式代碼評(píng)審,輕量級(jí)代碼評(píng)審所需要的各種成本要明顯低得多,如果流程正確,它可以起到更加積極的效果 。正因如此,輕量級(jí)代碼評(píng)審經(jīng)常性地被引入到軟件開(kāi)發(fā)過(guò)程中 。
為什么Code Review?
1.提高代碼質(zhì)量 。
2.及早發(fā)現(xiàn)潛在缺陷,降低修改/彌補(bǔ)缺陷的成本 。
3.促進(jìn)團(tuán)隊(duì)內(nèi)部知識(shí)共享,提高團(tuán)隊(duì)整體水平 。
4.評(píng)審過(guò)程對(duì)于評(píng)審人員來(lái)說(shuō),也是一種思路重構(gòu)的過(guò)程 。幫助更多的人理解系統(tǒng) 。
5.是一個(gè)傳遞知識(shí)的手段,可以讓其它并不熟悉代碼的人知道作者的意圖和想法,從而可以在以后輕松維護(hù)代碼 。
6.鼓勵(lì)程序員們相互學(xué)習(xí)對(duì)方的長(zhǎng)處和優(yōu)點(diǎn) 。
7.可以被用來(lái)確認(rèn)自己的設(shè)計(jì)和實(shí)現(xiàn)是一個(gè)清楚和簡(jiǎn)單的 。
如何做Code Review?
【Code Review如何有效的進(jìn)行】Code Review檢查什么?
1.結(jié)構(gòu)問(wèn)題
代碼比較大的問(wèn)題,不是一兩個(gè)地方有技術(shù)缺陷,也不是業(yè)務(wù)邏輯錯(cuò)誤,而是整個(gè)軟件設(shè)計(jì)的不好 。前兩者更容易通過(guò)測(cè)試或使用來(lái)發(fā)現(xiàn)和更正,但后者就不同了 。如果回想一下自己見(jiàn)過(guò)的各種爛攤子,是不是有同感?具體哪里有問(wèn)題怎么改說(shuō)不上來(lái),就是整個(gè)軟件看上去混亂無(wú)章,無(wú)從下手 。
具體結(jié)構(gòu)問(wèn)題包括:重復(fù)拷貝代碼(不封裝函數(shù),不用Template/泛型……),函數(shù)過(guò)長(zhǎng)(超過(guò)一屏幕就叫過(guò)長(zhǎng)),錯(cuò)誤封裝(不恰當(dāng)?shù)膒ublic/不用Interface/不內(nèi)聚/強(qiáng)耦合/在類中封裝了無(wú)關(guān)方法……),內(nèi)容錯(cuò)誤(多個(gè)無(wú)關(guān)類置于一個(gè)文件/不恰當(dāng)?shù)拿?等等 。
改正結(jié)構(gòu)問(wèn)題,是從編寫(xiě)可靠軟件向編寫(xiě)精美軟件邁進(jìn)的重要方法 。
2.業(yè)務(wù)邏輯問(wèn)題
就是軟件是否與需求的要求符合的問(wèn)題 。審核者和被審核者經(jīng)常對(duì)業(yè)務(wù)需求的理解有差異,借此機(jī)會(huì)同步一下,必要時(shí)引入PO(產(chǎn)品經(jīng)理/產(chǎn)品負(fù)責(zé)人) 。
有人會(huì)說(shuō)業(yè)務(wù)邏輯問(wèn)題不是一測(cè)試就知道了嗎?可是測(cè)試一般發(fā)生在很久以后,有些邏輯測(cè)試還需要一定的觸發(fā)條件,而且測(cè)試只會(huì)發(fā)現(xiàn)失效(failure, 與預(yù)期不符)而不能發(fā)現(xiàn)缺陷(defect, 具體哪里出了錯(cuò)),等積累長(zhǎng)了,誰(shuí)也找不到原因了 。
3.編程素養(yǎng)問(wèn)題
很多問(wèn)題屬于那種“這樣也行那樣也行”的狀態(tài),比如命名/初始值/縮進(jìn)/斷行……但是高手的做法總是比新手好一些 。
比如bool result = true; 這句話就有問(wèn)題,剛初始化就先宣布成功,必有隱患 。這是一個(gè)真實(shí)案例,而下面也的確有一個(gè)分支錯(cuò)誤地返回了這個(gè)true(實(shí)際案例是個(gè)HRESULT) 。而發(fā)現(xiàn)這個(gè)問(wèn)題,不是測(cè)試而是代碼檢查 。實(shí)際上測(cè)試幾乎發(fā)現(xiàn)不了這些問(wèn)題,比如上面那段代碼會(huì)在某文件打不開(kāi)的時(shí)候錯(cuò)誤地返回這個(gè)true,而在測(cè)試中幾乎不會(huì)故事破壞那個(gè)文件來(lái)測(cè)試其結(jié)果 。
經(jīng)常進(jìn)行Code Review
常見(jiàn)的Code Review是高手審核新手,或者師傅走查徒弟 。一般而言,大致高手每天能編寫(xiě)100多行有效代碼(按分號(hào)計(jì)數(shù)),新手會(huì)多一些但也不超過(guò)200(他們編寫(xiě)代碼比較費(fèi)),也就是10個(gè)屏幕以內(nèi) 。有經(jīng)驗(yàn)的人一定知道:高手看新手的代碼,5秒鐘就能發(fā)現(xiàn)問(wèn)題 。所以不用花上很長(zhǎng)時(shí)間去做Code Review,而應(yīng)該“少吃多餐”,每次可以5分鐘,10分鐘,每天2-3次甚至更多 ??吹揭粋€(gè)問(wèn)題就要徹底解決,不需要一次檢查很多,問(wèn)題一次比一次少即可 。

推薦閱讀