代碼審查:好事?壞事?
在軟件開發(fā)領(lǐng)域,代碼審查看起來是一個少有爭議、相當平和的話題。
主流觀點普遍認為代碼審查是個好東西。有些公司或組織甚至強制要求把代碼互審作為必須的流程。
審查是一種捕捉bug和問題的好措施。通過代碼審查能夠分享領(lǐng)域知識,提高代碼質(zhì)量。代碼審查提供了一個對團隊進行監(jiān)控,教育和強化的好機會。
至少理論上是這樣的…
當挽起袖子開干,當面對真正的項目計劃產(chǎn)生的壓力時,代碼審查很有可能轉(zhuǎn)而變成一件壞事。
審查是一種能夠?qū)е略骱藓头至训幕顒?。它能使人對編寫的代碼是否正確產(chǎn)生懷疑,會激起人們?yōu)樗麄冏约旱木幋a標準而宣揚說教。代碼審查是一種日?;顒?,它執(zhí)行的正確與否帶來的是團隊的開發(fā)效率的提升或是扼殺。
對于一個團隊,有效的代碼審查走的是一條中庸的路線——它既不會成為解決一切問題的銀彈,也不會成為傷害團隊的毒藥。
經(jīng)過一些思考和跟一些同事討論之后,我認為,成功的代碼審查的關(guān)于因素是 信任和訓(xùn)練。
團隊成員必須相信,來自代碼審查中的反饋意見并不是對個人攻擊或?qū)ψ约耗芰Φ脑u判。審查者必須相信,受審查者不會因為你提出了改進意見而憎恨你。
團隊成員必須把代碼審核看著是一個能不斷得到建設(shè)性反饋意見的平臺,而不是用來對團隊成員評分評級或制造消極激進言論的工具。
當一個團隊組成時,信任并不是天生就存在于團隊成員中的。
而訓(xùn)練人們?nèi)绾握_的展開一次代碼審查,可以讓人們在審查過程中建立信任。
所有我呆過的項目團隊中,我發(fā)現(xiàn),學(xué)習(xí)如何正確的做代碼審查的方法就是讓大家審查自己的代碼。這樣之后,你才會知道如何給別人做代碼審查!這種方法提供了很多真實情景來解釋如何進行代碼審查。
訓(xùn)練新手如何正確的提出評審意見,告訴他們應(yīng)該關(guān)注什么才能給有經(jīng)驗的程序員提出有價值的意見。指導(dǎo)團隊負責人在合適的時候給予評審者支持,點出有意義的評審意見,這樣能強化團隊的信任,使團隊成員互相尊敬。
那么,代碼審查是好事還是壞事呢?
這依賴于你的團隊的愿望,是否努力把它變成一種積極的措施。就像對于任何這種開發(fā)方法論,簡單拿過來用是不行的——你必須保證你在以正確的方式用它。