設(shè)計(jì)和代碼審查:是好、是壞還是不堪入目?[轉(zhuǎn)]
Posted on 2008-03-19 21:20 Matthew Chen 閱讀(279) 評(píng)論(0) 編輯 收藏 所屬分類: Software Engineering設(shè)計(jì)和代碼審查:是好、是壞還是不堪入目?
作者 Vikas Hazrati譯者 李劍 發(fā)布于 2008年3月10日 上午11時(shí)4分
轉(zhuǎn)自: http://www.infoq.com/cn/news/2008/03/code-review-antipatterns
在一篇有關(guān)設(shè)計(jì)和代碼復(fù)查的文章中,Kirk
Knoernschild提到,這種復(fù)查的承諾是改進(jìn)軟件質(zhì)量、確保與標(biāo)準(zhǔn)的一致性,并且可以作為一種有價(jià)值的工具為開發(fā)人員服務(wù),但是它們的執(zhí)行方式卻影響到了自身的價(jià)值。在某些組織中,它們可能真的見效;而在另一些地方,可能也不過是官僚作風(fēng)的一種體現(xiàn)而已。
迫害式復(fù)查——編寫代碼的開發(fā)人員有被攻擊的感覺,甚感恐懼。
花括號(hào)復(fù)查——只強(qiáng)調(diào)排版結(jié)構(gòu)和縮進(jìn)之類的瑣碎細(xì)節(jié),而置更為嚴(yán)重的問題于不顧。
盲查——復(fù)查人在參與復(fù)查之前從來(lái)沒有看過一眼代碼,并在未經(jīng)準(zhǔn)備的情況下參加復(fù)查會(huì)議。
排它性復(fù)查——只拿出代碼中的某一段樣本來(lái)進(jìn)行復(fù)查,把其他重要的部分都棄而不顧。
樵夫式復(fù)查——一直等到代碼庫(kù)變成龐然大物再進(jìn)行復(fù)查,而這時(shí)要進(jìn)行完整的復(fù)查已經(jīng)變成了難如登天且事倍功半的任務(wù)。
令箭式復(fù)查——將復(fù)查活動(dòng)形式化,只因?yàn)槭枪芾韺哟蛩氵@樣做。
世界性復(fù)查——在為數(shù)眾多且大部分都與項(xiàng)目無(wú)關(guān)的人士之前進(jìn)行復(fù)查,并因此令開發(fā)者惶恐不安。
Kirk認(rèn)為,為了進(jìn)行有效的復(fù)查,團(tuán)隊(duì)必須力求將復(fù)查過程做到自動(dòng)化,同時(shí)收集一些度量標(biāo)準(zhǔn)。團(tuán)隊(duì)還應(yīng)該把反饋機(jī)制納入他們現(xiàn)有的開發(fā)環(huán)境中,這樣開發(fā)人員在準(zhǔn)備提交代碼前就會(huì)收到自動(dòng)警示提示。
他提到有些工具可以將復(fù)查過程變得更加客觀、關(guān)注點(diǎn)更為集中:
Kirk還提到了一種用來(lái)進(jìn)行復(fù)查的有趣方式,名為20%復(fù)查:
20%復(fù)查的想法是很簡(jiǎn)單的:一旦開發(fā)完成了20%,那么就應(yīng)該進(jìn)行一次復(fù)查。對(duì)有些團(tuán)隊(duì)來(lái)說,在每一次迭代中都進(jìn)行20%復(fù)查會(huì)收到顯著成效。它的效果 確實(shí)不錯(cuò),不過如果開發(fā)團(tuán)隊(duì)可以成功地使用度量標(biāo)準(zhǔn)進(jìn)行持續(xù)復(fù)查,那么針對(duì)每一個(gè)主要的系統(tǒng)功能進(jìn)行20%復(fù)查就足夠了。
20%復(fù)查應(yīng)當(dāng)關(guān)注初始設(shè)計(jì)和代碼的整潔。在代碼庫(kù)大小相對(duì)易于管理時(shí),上面提到的度量標(biāo)準(zhǔn)可以深入洞察代碼的演化和發(fā)展?fàn)顩r。
他在文末又強(qiáng)調(diào)了要通過使用度量標(biāo)準(zhǔn)來(lái)將復(fù)查過程變得更具客觀性、關(guān)注點(diǎn)更集中的重要性,以此作為全文的收束。自動(dòng)化程度越高,就越容易達(dá)到這些標(biāo)準(zhǔn),然后就可以進(jìn)行有效的復(fù)查。復(fù)查應(yīng)該盡早進(jìn)行,這樣開發(fā)者才能夠把早期的收獲用到開發(fā)過程中,復(fù)查的有效度不會(huì)受到損害。