給代碼審查者的幾點(diǎn)建議
在軟件開(kāi)發(fā)項(xiàng)目中同行代碼審查是一種常見(jiàn)的做法。代碼審查有助于識(shí)別潛在的Bug以及規(guī)范項(xiàng)目編碼標(biāo)準(zhǔn),對(duì)項(xiàng)目和團(tuán)隊(duì)的確有很大幫助。
代碼審查涉及四大領(lǐng)域,開(kāi)發(fā)者自身、審查者、學(xué)習(xí)者以及傳教者??梢哉f(shuō),貫穿整個(gè)技術(shù)和知識(shí)領(lǐng)域。
1. Teaching + Programming (教學(xué)+編程)
代碼審查為你提供與同伴分享編程知識(shí)的好機(jī)會(huì)。在這里不是為了炫耀你學(xué)到的最新技巧,而是去幫助改善另一名開(kāi)發(fā)者的技能。作為一名程序員你可以積極的貢獻(xiàn)出個(gè)人的成長(zhǎng)歷程,提供最寶貴的經(jīng)驗(yàn)反饋。利用特定的技術(shù)或者引入具體的項(xiàng)目實(shí)踐是指導(dǎo)新手的兩大最有效方法。
2. Teaching + Domain(教學(xué)+域)
大多數(shù)內(nèi)置的軟件項(xiàng)目具有不平凡的域特點(diǎn)。 一個(gè)不平凡的域需要大量的模型來(lái)表示其行為和代碼屬性。由于代碼的模型行為和屬性是兩個(gè)密不可分的部分。因此,審查者在整個(gè)域建模思路中扮演一個(gè)極其重要的角色。
3. Learning + Programming(學(xué)習(xí)+編程)
開(kāi)發(fā)者在代碼審查上會(huì)利用不同方法來(lái)解決問(wèn)題。觀察和理解其他程序員編寫(xiě)的代碼是改善代碼風(fēng)格、掌握技術(shù)、了解新的類(lèi)庫(kù)以及學(xué)習(xí)新的模式最有效的方式之一。
4. Learning + Domain(學(xué)習(xí)+域)
在代碼中捕獲信息是學(xué)習(xí)域的概念和整體功能一項(xiàng)最基本的資源。代碼實(shí)際上是一個(gè)軟件系統(tǒng)最詳細(xì)的文檔列表。理解性的閱讀代碼能夠有助于擴(kuò)展理解系統(tǒng)以外的內(nèi)容。
大多數(shù)開(kāi)發(fā)者會(huì)在代碼審查領(lǐng)域中游離,因?yàn)樗麄兿氤蔀楦玫某绦騿T以及學(xué)習(xí)更多的域知識(shí)。盡管有些開(kāi)發(fā)者有機(jī)會(huì)學(xué)到更多,但他們常常會(huì)因此而感到 滿足。如果一名開(kāi)發(fā)者在某個(gè)項(xiàng)目中采用新技術(shù)(除了這個(gè)領(lǐng)域的專家),他將扮演兩個(gè)角色。在某種情況下審查者會(huì)發(fā)現(xiàn)自己同時(shí)處在四個(gè)領(lǐng)域。 意識(shí)到這些領(lǐng)域的優(yōu)勢(shì)是做代碼代碼審查最寶貴的經(jīng)驗(yàn),無(wú)論審查者的資歷水平如何。
給代碼審查者的幾點(diǎn)建議:
1. 讓團(tuán)隊(duì)中的所有開(kāi)發(fā)者擁有代碼所有權(quán)
作為開(kāi)發(fā)者,我們喜歡在家編碼的感覺(jué)。代碼審查從代碼所有者切換至團(tuán)隊(duì)作者,他們擁有共同的利益。這種關(guān)系的轉(zhuǎn)換使得整個(gè)團(tuán)隊(duì)都在為代碼質(zhì)量而負(fù)責(zé),任何一名團(tuán)隊(duì)成員都應(yīng)積極擁抱變化。此外,在極限編程中還涉及到共享代碼(或集體代碼所有權(quán))問(wèn)題。
2. 逐步提高開(kāi)發(fā)者的編碼技能
同行審查能夠提高團(tuán)隊(duì)的平均技能水平。此外,它還具備了無(wú)形的壓力促使開(kāi)發(fā)者更寫(xiě)更好的代碼。
3. 傳播域知識(shí)
理解從代碼中捕獲的功能有助于在整個(gè)團(tuán)隊(duì)成員之間傳播(共享)系統(tǒng)知識(shí)。它使整個(gè)團(tuán)隊(duì)間更有凝聚力,有效避免了任何一名開(kāi)發(fā)者在任意系統(tǒng)工作領(lǐng)域中“挑三揀四”的情況發(fā)生。
4. 培養(yǎng)集體智慧
團(tuán)隊(duì)整體完成的項(xiàng)目質(zhì)量要遠(yuǎn)遠(yuǎn)高出開(kāi)發(fā)者獨(dú)自完成工作的總和。每位開(kāi)發(fā)者都可帶來(lái)不同的技能,實(shí)現(xiàn)協(xié)同編程,為團(tuán)隊(duì)“添磚加瓦”。
代碼審查是我最喜愛(ài)的團(tuán)隊(duì)建設(shè)活動(dòng)之一。它不僅是關(guān)注代碼,而且還能見(jiàn)證整個(gè)團(tuán)隊(duì)的成長(zhǎng)。值得一提的是,結(jié)隊(duì)編程常被看作是代碼審查的一種極端形式,這是一種值得推崇的代碼審查方式。