Picses' sky

          Picses' sky
          posts - 43, comments - 29, trackbacks - 0, articles - 24

          設(shè)計(jì)和代碼審查:是好、是壞還是不堪入目?

          作者 Vikas Hazrati譯者 李劍 發(fā)布于 2008年3月10日 上午11時(shí)4分

          社區(qū)
          Agile
          主題
          質(zhì)量交付

          轉(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)而已。

          他認(rèn)為下面這些就屬于最糟糕的復(fù)查實(shí)踐:

          迫害式復(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)更為集中:

          • JDepend,用于檢查設(shè)計(jì)質(zhì)量
          • PMD,用于檢查代碼整潔程度
          • JavaNCSS,用于檢查代碼質(zhì)量
          • Emma,用于檢查測(cè)試覆蓋率

          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ì)受到損害。


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 寿阳县| 梁山县| 克拉玛依市| 教育| 渭南市| 定西市| 云安县| 泽普县| 廊坊市| 信宜市| 武鸣县| 独山县| 平塘县| 雅安市| 孟津县| 鹤山市| 台州市| 开封县| 禹城市| 常山县| 门源| 陵水| 崇州市| 滁州市| 九龙城区| 双柏县| 铜山县| 饶阳县| 万安县| 拜城县| 赫章县| 平定县| 贵港市| 甘谷县| 张家港市| 顺义区| 齐河县| 武冈市| 雅安市| 托里县| 河北区|