如何進行高效的代碼評審

???????? 代碼評審有很多用途宰译,最常見的是在代碼發(fā)布之前檢查缺陷檐蚜,除此之外,代碼評審還可以用來傳播知識沿侈、保證質(zhì)量闯第。最簡單的代碼評審是在變更提交之前對代碼進行快速瀏覽,以批準分支合并缀拭;最詳細的代碼評審咳短,可能包括配對填帽、逐行評審,以及多輪評審和反饋咙好。

???????? 如果你評審的代碼短小篡腌、且有清晰的描述,那恭喜你有個好的開始勾效;即便如此嘹悼,剛開始時,很多人還是會覺得無從下手层宫。這篇文章主要介紹如何在團隊中開展代碼評審杨伙,相信對剛剛接觸此項工作的同學(xué)會有幫助。

???????? 一萌腿、拆分

如果需要評審的代碼量太大(成百上千行)限匣,需要先拆分成容易處理的多個部分。如果代碼不好拆分毁菱,或者拆分后代碼量依然很大膛腐,就需要跟原作者一起工作。這有點兒類似于結(jié)對開發(fā)鼎俘,作者和評審者仿佛在道路兩側(cè)并肩前行哲身,作者介紹代碼,評審者提出問題贸伐;當穿行過整個代碼后勘天,在代碼行中批注出當時討論的問題和結(jié)論。

???????? 二捉邢、執(zhí)行評審

???????? 1脯丝、進行多輪評審

在評審過程中要記住所有需要檢查的事項很困難,頻繁切換評審語境也會帶來問題伏伐。比如宠进,你正專注于代碼可讀性評審時,可能就遺漏了安全性和性能方面的問題藐翎。好的處理方式是代碼評審做多輪材蹬,每輪只針對一個主題,這個主題結(jié)束后吝镣,就提交評審報告堤器,再開始下一個主題。評審檢查項的順序應(yīng)該從大到小末贾,從一般到特殊闸溃;比如說,如果整個類(方法)都需要重構(gòu),那再去提修改變量命名的建議就沒什么意義辉川。

必須毫不猶豫的進行多論代碼評審表蝙,并在此過程中不斷擴充評審范圍。

???????? 2乓旗、評審項

???????? (1)需求滿足程度府蛇。

? ? ? ? ? 代碼滿足需求沒有?

? ? ? ? ? UI實現(xiàn)跟設(shè)計是否一致寸齐?

? ? ? ? ? 變化是否在允許范圍內(nèi)?

???????? (2)架構(gòu)和設(shè)計

? ? ? ? ? ? 功能是如何實現(xiàn)的抄谐,能否從代碼中比較清晰的識別出設(shè)計渺鹦?

? ? ? ? ? ? 設(shè)計是否遵從一貫的準則,如果沒有蛹含,新的變化是否有意義毅厚?

? ? ? ? ? ? 是否足夠簡潔,還是進行了過度設(shè)計浦箱?

? ? ? ? ? ? 是否支持擴展吸耿,是通用的還是專用的,是否過早進行了抽象酷窥?

? ? ? ? ? ?如果明天新來一個同學(xué)咽安,從代碼中能理解設(shè)計不?

???????? (3)副作用

? ? ? ? ? ? 對于復(fù)雜的應(yīng)用來說蓬推,看似無害的改動可能會影響核心功能妆棒。

? ? ? ? ? ? 代碼會不會給其他模塊帶來不可預(yù)料的后果?

? ? ? ? ? ? 如果一個方法被修改了沸伏,是否所有的調(diào)用者都進行了更新糕珊?

? ? ? ? ? ? 增加的外在依賴是否經(jīng)過評估?

???????? (4)測試覆蓋

? ? ? ? ? ? 進行測試了么毅糟?

? ? ? ? ? ? 測試腳本未來會不起作用么红选?

? ? ? ? ? ? 測試了正確的方法么?

? ? ? ? ? ? 測試架構(gòu)是合適的么姆另?

? ? ? ? ? ? 邊緣測試做了么喇肋?

???????? (5)性能

? ? ? ? ? ?是否會有性能瓶頸?

? ? ? ? ? ?做了哪些查詢迹辐,是否比需要拿了更多的數(shù)據(jù)苟蹈?

? ? ? ? ? ?這些代碼會不會對其他模塊的性能產(chǎn)生影響?

???????? (6)可讀性和編碼風(fēng)格

? ? ? ? ? 不用作者解釋右核,你能讀懂代碼么慧脱?

? ? ? ? ? ?沒有作者的幫助,你能調(diào)試和修改代碼么贺喝?

? ? ? ? ? 變量的用途是否能從名字上看出來菱鸥?方法和類呢宗兼?

? ? ? ?(7)日志記錄

? ? ? ? ?如果沒有良好的日志,幾乎不可能正確地調(diào)試服務(wù)器代碼氮采。是否所有東西都正確地記錄或追蹤殷绍?

? ? ? ?(8)異常處理

? ? ? ? ?后端異常是如何處理的;它們是如何與用戶溝通的鹊漠;反饋是否在可能情況下激活主到?

???????? 三、致力于傳遞價值

???????? 所有的代碼評審都為了傳遞價值躯概,用來幫助團隊提高交付質(zhì)量登钥,而不是陷入細節(jié)的爭論。評審過程中要注意阻止代碼提交的分寸娶靡,如果有錯誤牧牢,明確不可提交;如果需要重構(gòu)姿锭,則跟作者溝通時間塔鳍,看當前重構(gòu)還是留待以后。不要幻想完美主義呻此,完美是不存在的轮纫,只要代碼沒有錯誤且比前一版本更好,就應(yīng)該通過評審焚鲜。

???????? (1)要有幫助

???????? 代碼評審的目標不是為了阻止缺陷蜡感,那是測試要做的工作。代碼評審是團隊在代碼庫中學(xué)習(xí)的機會恃泪,也是提高代碼質(zhì)量的機會郑兴。堅持進行有效的代碼評審,每個人都會從中收獲良多。代碼評審中最有效的傳授經(jīng)驗的方式,就是寫下詳細的評論信息示括,必要時鏈接到有助于理解的文章。不要僅僅指出問題却舀,應(yīng)該說明為什么有問題,如何改進問題锤灿。如果有更高效的查詢方法挽拔,應(yīng)該在備注中介紹這種方法,而不僅僅指出問題但校。????????

? ? ? ?(2)要人性化

???????? 代碼評審的核心是要向作者反饋問題螃诅,這可能會是個艱難的工作。團隊中的每個人都希望盡力做到最好,因此反饋問題的方式要特別謹慎术裸,要注意方式方法倘是。不要忘記在評審中對好的代碼進行充分肯定。

???????? 四袭艺、最佳實踐

???????? 明白代碼評審時的目標(檢查項)

???????? 在評審之前完成構(gòu)建和單元測試工作

???????? 一次評審不要超過60分鐘

???????? 一次評審的代碼量不要超過400行

???????? 在反饋中給出具體的解決辦法而不是只提示問題

???????? 在團隊中傳遞代碼評審的目標和期望

???????? 在代碼評審的過程中要包含團隊中的每一個人

???????? 培養(yǎng)積極的文化

???????? 使用自動化工具提高效率

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搀崭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子猾编,更是在濱河造成了極大的恐慌瘤睹,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件答倡,死亡現(xiàn)場離奇詭異轰传,居然都是意外死亡,警方通過查閱死者的電腦和手機苇羡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進店門绸吸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鼻弧,“玉大人设江,你說我怎么就攤上這事∪列” “怎么了叉存?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵,是天一觀的道長度帮。 經(jīng)常有香客問我歼捏,道長,這世上最難降的妖魔是什么笨篷? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任瞳秽,我火速辦了婚禮,結(jié)果婚禮上率翅,老公的妹妹穿的比我還像新娘练俐。我一直安慰自己,他們只是感情好冕臭,可當我...
    茶點故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布腺晾。 她就那樣靜靜地躺著,像睡著了一般辜贵。 火紅的嫁衣襯著肌膚如雪悯蝉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天托慨,我揣著相機與錄音鼻由,去河邊找鬼。 笑死,一個胖子當著我的面吹牛嗡靡,可吹牛的內(nèi)容都是我干的跺撼。 我是一名探鬼主播,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼讨彼,長吁一口氣:“原來是場噩夢啊……” “哼歉井!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起哈误,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤哩至,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蜜自,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體菩貌,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年重荠,在試婚紗的時候發(fā)現(xiàn)自己被綠了箭阶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡戈鲁,死狀恐怖仇参,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情婆殿,我是刑警寧澤诈乒,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站婆芦,受9級特大地震影響怕磨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜消约,卻給世界環(huán)境...
    茶點故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一肠鲫、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧或粮,春花似錦导饲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浓体,卻和暖如春泡挺,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背命浴。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工娄猫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留贱除,地道東北人。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓媳溺,卻偏偏與公主長得像月幌,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子悬蔽,可洞房花燭夜當晚...
    茶點故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容