軟件質(zhì)量保障之代碼走查
發(fā)表于:2018-10-08來(lái)源:未知作者:方騰飛點(diǎn)擊數:
標簽:代碼走查
代碼走查有幾個(gè)目的,第一個(gè)是讓新同學(xué)快速熟悉代碼并了解系統。第二個(gè)是做咨詢(xún)防控的事前檢查,避免引發(fā)線(xiàn)上故障。第三個(gè)是通過(guò)一起討論和審查,加強團隊代碼閱讀和編寫(xiě)能力
目的
代碼走查有幾個(gè)目的,第一個(gè)是讓新同學(xué)快速熟悉代碼并了解系統。第二個(gè)是做咨詢(xún)防控的事前檢查,避免引發(fā)線(xiàn)上故障。第三個(gè)是通過(guò)一起討論和審查,加強團隊代碼閱讀和編寫(xiě)能力,讓大家編寫(xiě)出優(yōu)秀的代碼。代碼走查的優(yōu)點(diǎn)非常多,但是最核心的還是提前發(fā)現問(wèn)題并解決問(wèn)題。
所以基于以上目的,代碼走查不是批評而是發(fā)現問(wèn)題共同成長(cháng),所以對于寫(xiě)代碼的同學(xué)不需要過(guò)于緊張,但是在代碼走查前可以自己看優(yōu)化一遍,但是變更必須有單元測試覆蓋。
什么場(chǎng)景應該做代碼走查?我認為有幾個(gè)時(shí)機點(diǎn)是需要做代碼走查的,第一個(gè)是定期,每幾個(gè)月定期做一次代碼走查。第二個(gè)是有重大變更時(shí)做代碼走查,如代碼第一次上線(xiàn)或增加了比較多的代碼。
如何進(jìn)行代碼走查
代碼走查的角色
-
主持人:負責主持整個(gè)走查活動(dòng),包括會(huì )議邀約和控制時(shí)間(一般一小時(shí)左右)進(jìn)度。為了讓代碼走查高效,需要及時(shí)阻止不必要的討論,比如講解人講的太發(fā)散、或者大家針對一個(gè)點(diǎn)討論時(shí)間過(guò)長(cháng)。
-
講解人:負責對代碼進(jìn)行講解并跟進(jìn)修改計劃,一般是系統Owner或代碼編寫(xiě)者。
-
記錄人:記錄代碼走查記錄,記錄中包括代碼走查中發(fā)現的問(wèn)題點(diǎn)、修復方法和最佳實(shí)踐,問(wèn)題需要指定到對應的人。
-
評審人:對代碼進(jìn)行評審發(fā)現問(wèn)題并找出最佳實(shí)踐,一般是資深開(kāi)發(fā)和測試同學(xué)。
-
參與人:參加代碼走查,主要以學(xué)習為主。
走查前做好充分準備
講解人整理本次要走讀的代碼分支、系分設計和代碼入口,然后發(fā)郵件通知大家,參加代碼走查的人提前閱讀系分和代碼,針對看不懂的代碼、有問(wèn)題的代碼和設計復雜的代碼全部提交Review記錄。
講解人必須想好走查哪些代碼,一般是主流程或有問(wèn)題的點(diǎn),控制整個(gè)代碼走查的時(shí)間,我們第一次代碼走查花了三個(gè)多小時(shí),由于時(shí)間太長(cháng),走查的過(guò)程中開(kāi)發(fā)都走了幾個(gè)。
走查中控制節奏
直接講代碼很多沒(méi)參與的同學(xué)會(huì )很暈,所以先大致講下系分設計,不需要全部講完設計再講代碼,而是講一部分設計,再講一部分代碼。講解人帶著(zhù)大家一行一行讀代碼,講解代碼的含義和思考,記錄人負責記錄Review出的問(wèn)題和最佳實(shí)踐。
代碼走查的評判標準,主要關(guān)注幾個(gè)點(diǎn)
-
編碼規范: 可以使用IDEA的插件自動(dòng)掃描有沒(méi)有編碼問(wèn)題。
-
設計規范
-
冪等性
-
邏輯問(wèn)題:是否滿(mǎn)足需求。
-
一致性問(wèn)題
-
并發(fā)和鎖:在并發(fā)情況下,代碼執行結果是否有問(wèn)題。
-
性能問(wèn)題:代碼是否存在性能問(wèn)題,預計峰值流量能到多少。
-
分支覆蓋率:是否有分支沒(méi)有覆蓋
走查后總結
在代碼走查之后,要優(yōu)化代碼走查,所以會(huì )發(fā)一個(gè)調查問(wèn)卷給大家
-
參加代碼走查有什么收獲?
-
對代碼走查有什么建議?
我們走查完之后有幾個(gè)改進(jìn)點(diǎn)
-
時(shí)間把控:第一次代碼走查主持人和講解人時(shí)間沒(méi)控制好,走查了三個(gè)多小時(shí),后續主講人講重點(diǎn),主持人隨時(shí)控場(chǎng),討論超過(guò)幾分鐘的就記錄下面,線(xiàn)下討論。
-
重點(diǎn)優(yōu)先:大家前面精力比較好后面就分神了,后續主講人優(yōu)先走查重點(diǎn)代碼。
原文轉自:http://ifeve.com/code-review/