執(zhí)行代碼審查的三個(gè)小技巧
執(zhí)行代碼審查是識(shí)別錯(cuò)誤、共享知識(shí)和創(chuàng)建高質(zhì)量產(chǎn)品的有效機(jī)制。不幸的是,大多數(shù)開發(fā)人員寧愿擁有根管道,也不愿意參加代碼審查。他們常常感到痛苦和無所作為。您是否曾經(jīng)嘗試過創(chuàng)建一個(gè)團(tuán)隊(duì)習(xí)慣,即代碼審查,卻發(fā)現(xiàn)它在幾個(gè)星期后就會(huì)失敗?或者你的代碼評(píng)審不會(huì)帶來時(shí)間投資的回報(bào)?
在今天的帖子中,我們將探索幾個(gè)技巧,以幫助您實(shí)現(xiàn)代碼評(píng)審的現(xiàn)代化,從而獲得開發(fā)人員的支持,并使您更加有效。
提示1-執(zhí)行"離線"代碼評(píng)審
我從來不喜歡傳統(tǒng)的代碼評(píng)論。這些"在線"代碼評(píng)審讓一組開發(fā)人員進(jìn)入同一個(gè)房間來閱讀代碼。應(yīng)該有記錄員、閱讀員和其他各種角色。讀者說明代碼應(yīng)該做什么,并在十幾位同事坐在旁邊聽的時(shí)候逐行閱讀,如果他們能保持清醒的話,偶爾提供反饋。
在線代碼評(píng)審有很多問題。例如,當(dāng)許多團(tuán)隊(duì)成員在一個(gè)房間里時(shí),工作要有效率。你很可能會(huì)被轉(zhuǎn)移話題,被迫不斷地把話題帶回評(píng)論上來。為了獲得成功,你應(yīng)該限制你花多少時(shí)間,每次只花一個(gè)小時(shí)來審查代碼。你應(yīng)該將審查限制在不超過400行代碼的范圍內(nèi),這樣才是最有效的。
這些是很好的指導(dǎo)方針,并已證明是有效的。但是當(dāng)12個(gè)團(tuán)隊(duì)成員每天產(chǎn)生100個(gè)LOC時(shí),你會(huì)怎么做呢?你需要團(tuán)隊(duì)中的每個(gè)人每天進(jìn)行三個(gè)小時(shí)的代碼評(píng)審!在某種程度上,勞動(dòng)力成本和投資回報(bào)是相互競爭的.
在線代碼評(píng)審的另一種選擇是脫機(jī)進(jìn)行評(píng)審。不要讓每個(gè)人都呆在一個(gè)房間里,而是使用你的軟件管理框架進(jìn)行代碼評(píng)審。我最喜歡的流程之一是在合并請(qǐng)求之前不執(zhí)行代碼審查。你和你的團(tuán)隊(duì)?wèi)?yīng)該經(jīng)常承諾和合并。合并請(qǐng)求不是讓團(tuán)隊(duì)成員審查代碼、添加注釋和反饋的最佳時(shí)機(jī)嗎?
在合并請(qǐng)求中,您可以允許隊(duì)友在合并截止日期之前休閑地審查代碼。在代碼合并之前,開發(fā)人員有機(jī)會(huì)進(jìn)行這些改進(jìn)。希望他們能事先驗(yàn)證行為和識(shí)別任何錯(cuò)誤。
提示#2-編寫和評(píng)論"離線"評(píng)論的代碼
在執(zhí)行代碼審查時(shí),通常遵循一個(gè)標(biāo)準(zhǔn)過程。它通常涉及:
· 從代碼模塊的概述開始,了解其目的和功能。
· 逐行審查代碼,檢查語法錯(cuò)誤、邏輯問題和是否符合編碼標(biāo)準(zhǔn)
· 查明潛在的缺陷、安全漏洞或需要改進(jìn)的領(lǐng)域
如果你在代碼評(píng)審的基礎(chǔ)上編寫和評(píng)論你的代碼,你的團(tuán)隊(duì)在合并請(qǐng)求下執(zhí)行離線評(píng)審會(huì)容易得多。例如,你應(yīng)該在你的模塊中記錄你對(duì)模塊及其目的的概述!該函數(shù)的目的是什么,您所做的以這種方式編寫它的決定應(yīng)該記錄在案!
如果你編寫你的代碼以便能夠很容易地對(duì)代碼進(jìn)行審查,你會(huì)發(fā)現(xiàn)你的團(tuán)隊(duì)可以在沒有在同一個(gè)房間的情況下審查代碼。它們可以在管理工具中進(jìn)行注釋,您可以在提交最終合并請(qǐng)求之前收集和修改該工具。
提示3-分配小型評(píng)審團(tuán)隊(duì)
每個(gè)開發(fā)人員都很愿意查閱代碼庫中的每一行代碼。它有助于填寫系統(tǒng)中每個(gè)部分的細(xì)節(jié)。然而,對(duì)于今天的許多嵌入式產(chǎn)品來說,這個(gè)系統(tǒng)太大了,過于復(fù)雜,無法實(shí)現(xiàn)。相反,對(duì)于團(tuán)隊(duì)來說,確保每一行代碼都經(jīng)過審查,但只由某些人進(jìn)行審查,這更有意義。
將代碼審查過程分解為小型團(tuán)隊(duì)是確保產(chǎn)品中每一行代碼都得到審查的一個(gè)很好的方法,但有時(shí)只是由每個(gè)人進(jìn)行。開發(fā)人員A可能會(huì)讓開發(fā)人員B和C審查他們的代碼。同時(shí),開發(fā)人員B由開發(fā)人員C和D評(píng)審等.雖然每個(gè)審查模塊的開發(fā)人員都能提供獨(dú)特的見解,但我們可以通過將每個(gè)代碼的審查者人數(shù)限制在合理的數(shù)量范圍內(nèi),更有效地執(zhí)行代碼審查。
平衡審查特定模塊的團(tuán)隊(duì)的規(guī)模,可以幫助平衡代碼審查的好處,同時(shí)又不會(huì)阻礙開發(fā)團(tuán)隊(duì)。幫助確保團(tuán)隊(duì)仍然在生產(chǎn)代碼,同時(shí)確保生產(chǎn)的產(chǎn)品質(zhì)量合理。
代碼回顧小貼士
在嵌入式軟件中進(jìn)行代碼審查的必要性是至關(guān)重要的,但我認(rèn)為它們是團(tuán)隊(duì)放棄的第一個(gè)也是最簡單的過程。前三條提示讓您深入了解如何簡化流程,同時(shí)從代碼審查中獲得深刻見解和益處。代碼評(píng)審非常重要,我想多給你幾個(gè)建議會(huì)很有意思:
· 培養(yǎng)建設(shè)性的反饋環(huán)境。反饋不是對(duì)開發(fā)人員完成工作能力的判斷。
· 為守則的審查、更正和定稿設(shè)定一個(gè)時(shí)間表。
· 利用人工智能工具提供初步的反饋列表.(這可能是將來代碼評(píng)審的方式)
· 除非代碼通過了測(cè)試,否則不要審查代碼
· 不要審查代碼,除非它已經(jīng)傳遞了行行的代碼樣式
· 讓代碼審查成為你日常習(xí)慣的一部分(只要有合并請(qǐng)求)
· 玩得開心點(diǎn)。代碼評(píng)論是一個(gè)很好的機(jī)會(huì),與你的隊(duì)友積極接觸和學(xué)習(xí)!別以為你什么都知道!
結(jié)論
代碼審查提高了代碼質(zhì)量、可讀性、可維護(hù)性和團(tuán)隊(duì)協(xié)作。傳統(tǒng)的代碼審查方法最好的情況是痛苦的,最壞的情況是浪費(fèi)時(shí)間。不一定非要這樣。
在這篇文章中,我們探討了一些可以用來幫助改進(jìn)代碼評(píng)審的技巧。通過正確地編寫代碼和利用現(xiàn)代協(xié)作工具,您應(yīng)該能夠?qū)崿F(xiàn)代碼審查提供的所有好處,同時(shí)使它們更容易被接受。