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