版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、1. Code Review 目的Code Review 是一種用來確認(rèn)方案設(shè)計和代碼實現(xiàn)的質(zhì)量保證機(jī)制,通過這個機(jī)制我們可以對代碼、測試過程 和 注釋 進(jìn)行檢查。Code Review 主要用來在軟件工程過程中改進(jìn)代碼質(zhì)量,通過 Code Review 可以達(dá)到如下目的:?在項目早期就能夠發(fā)現(xiàn)代碼中的BUG。?幫助初級開發(fā)人員學(xué)習(xí)高級開發(fā)人員的經(jīng)驗,達(dá)到知識共享。?避免開發(fā)人員犯一些很常見,很普通的錯誤。?保證項目組人員的良好溝通。?項目或產(chǎn)品的代碼更容易維護(hù)。2. Code Review 的前提條件代碼提交審核前,開發(fā)者必須確保代碼符合如下條件,審核者需要確保所有前提條件都已滿足方可開始審
2、查,同時也是審查的主要檢查點。?所有代碼注釋清晰,語法正確,編譯通過。? 日志代碼完整,業(yè)務(wù)日志、系統(tǒng)日志分開,中文描述,脫敏處理,狀態(tài)變更,全部清晰明確。?測試代碼覆蓋全部分支和流程,暫時統(tǒng)一使用工具Emma (各編譯器可下載對應(yīng)插件)進(jìn)行 Coverage Check 。? 項目引用關(guān)系明確,依賴關(guān)系清晰,配置文件描述。3. Code Review 的審查范圍代碼的一致性、編碼風(fēng)格、代碼的安全問題、脫敏問題、代碼冗余、是否正確設(shè)計以符合設(shè)計要求 (性能、功能)與設(shè)計文檔相同等等。3.1、 完整性檢查(Completeness )代碼是否完全實現(xiàn)了設(shè)計文檔中所涉及的所有流程和功能點代碼是否已
3、包含所有所需的業(yè)務(wù)日志、系統(tǒng)日志、異常日志,日志內(nèi)容是否完整,日志文件 配置是否正確。代碼是否使用緩存等,配置信息是否正確可配置。代碼中是否存在任何沒有定義或沒有引用到的變量、常數(shù)或數(shù)據(jù)類型等3.2、致性檢查(Consistency )?代碼的邏輯是否符合設(shè)計文檔?代碼中使用的格式、符號、結(jié)構(gòu)等風(fēng)格是否保持一致3.3、 正確性檢查(Correctness )?代碼是否符合制定的標(biāo)準(zhǔn)?所有的變量都被正確定義和使用?所有的注釋都是準(zhǔn)確的?所有的程序調(diào)用都使用了正確的參數(shù)個數(shù)3.4、 可修改性檢查(Modifiability )?代碼涉及到的常量是否易于修改(如使用配置、定義為類常量、使用專門的常量
4、類等)?代碼中是否包含了交叉說明或數(shù)據(jù)字典,以描述程序是如何對變量和常量進(jìn)行訪問的?代碼是否只有一個出口和一個入口(嚴(yán)重的異常處理除外)3.5、 可預(yù)測性檢查(Predictability )?代碼所用的開發(fā)語言是否具有定義良好的語法和語義?是否代碼避免了依賴于開發(fā)語言缺省提供的功能?代碼是否無意中陷入了死循環(huán)?代碼是否避免了無窮遞歸3.6、 健壯性檢查(Robustness )?代碼是否采取措施避免運(yùn)行時錯誤(如數(shù)組邊界溢出、被零除、值越界、堆棧溢出等)3.7、 結(jié)構(gòu)性檢查(Structuredness )?程序的每個功能是否都作為一個可辯識的代碼塊存在?循環(huán)是否只有一個入口3.8、 可追溯
5、性檢查(Traceability )?代碼是否對每個程序進(jìn)行了唯一標(biāo)識?是否有一個交叉引用的框架可以用來在代碼和開發(fā)文檔之間相互對應(yīng)?代碼是否包括一個修訂歷史記錄,記錄中對代碼的修改和原因都有記錄?是否所有的安全功能都有標(biāo)識3.9、 可理解性檢查(Understandability )?注釋是否足夠清晰的描述每個子程序?是否使用到不明確或不必要的復(fù)雜代碼,它們是否被清楚的注釋?使用一些統(tǒng)一的格式化技巧(如縮進(jìn)、空白等)用來增強(qiáng)代碼的清晰度?是否在定義命名規(guī)則時采用了便于記憶,反映類型等方法?每個變量都定義了合法的取值范圍?代碼中的算法是否符合開發(fā)文檔中描述的數(shù)學(xué)模型3.10、 可驗證性檢查(V
6、erifiability)?代碼中的實現(xiàn)技術(shù)是否便于測試?測試代碼是否正確,是否覆蓋所有流程4. Code Review 的步驟目前Code Review步驟暫定如下,試行一段時間再根據(jù)問題做調(diào)整。1. 代碼編寫者?和?代碼審核者?坐在一起,由?代碼編寫者?按照設(shè)計文檔中的用例依次講解自 己所寫的代碼和相關(guān)邏輯,可采用從前端到后臺的方式,例如從 Web層->DAO 層。2. 代碼審核者?在此過程中可以隨時提出自己的疑問,同時積極發(fā)現(xiàn)隱藏的bug ;代碼編寫者?和?代碼審核者?都要對這些bug記錄在案,代碼編寫者?修改后再次提交審核, 代碼審核者?對 應(yīng)bug記錄進(jìn)行回驗。3. 代碼講解完
7、畢后,代碼審核者?給自己安排幾個小時再對代碼審核一遍。4. 代碼需要一行一行靜下心看。同時代碼又要全面的看,以確保代碼整體上設(shè)計優(yōu)良。5. 代碼審核者?根據(jù)審核的結(jié)果編寫代碼審核結(jié)果"并將審核記錄"和審核結(jié)果”提交至GIT ,審核記錄 和 審核結(jié)果 參見附錄I審核記錄、附錄II審核結(jié)果。6. 代碼編寫者?GIT pull并根據(jù) 審核結(jié)果”給出的修改意見,修改好代碼,有不清楚的地方可 積極向?代碼審核者?提出。7. 代碼編寫者?bug fix等全部修改完成后提交?代碼審核者?再次進(jìn)行審核,通過審核則 ?代碼 審核者?更新本次審查結(jié)果并提交至 GIT ,審核通過對代碼不能再進(jìn)行
8、修改,任何已通過審核的 代碼修改必須重新進(jìn)行審核流程。8. 代碼審核者?把Code Review 中發(fā)現(xiàn)的有價值的問題更新到 “代碼規(guī)范”的文檔中,對于特別值得提醒的問題可群發(fā) email或QQ給所有技術(shù)人員。5. Code Review 標(biāo)準(zhǔn)代碼審查的基礎(chǔ)是我們的 設(shè)計文檔規(guī)范、代碼規(guī)范、日志規(guī)范、測試代碼規(guī)范,針對新增的業(yè)務(wù)場 景和設(shè)計尚未有規(guī)范對應(yīng)時應(yīng)先確立規(guī)范然后再進(jìn)行代碼審核流程。6. Code Review 注意點6.1、 經(jīng)常進(jìn)行 Code Review? 要Review的代碼越多,那么要重構(gòu),重寫的代碼就會越多。而越不被代碼編寫者接受的建 議也會越多,唾沫口水戰(zhàn)也會越多。建議每
9、一個功能,每一個用例完成后都可以進(jìn)行審核,將 大任務(wù)拆分為小任務(wù)進(jìn)行。?程序員代碼寫得時候越長,程序員就會在代碼中加入越來越多的個人的東西。?越接近軟件發(fā)布的最終期限,代碼也就不能改得太多。6.2、 Code Review 不要太正式,而且要短忘了那個代碼評審的 Checklist吧,走到你的同事座位跟前,像請師父一樣請他坐到你的電腦面前,然后,花5分鐘給他講講你的代碼,給他另外一個5分鐘讓他給你的代碼提提意見,這比什么都好。而如果你用了一個 Checklist ,讓這個事情表現(xiàn)得很正式的話,下面兩件事中必有一件事會發(fā)生:? 只有在Checklist 上存在的東西才會被 Review 。? C
10、ode Reviews 變成了一種禮節(jié)性的東西, 你的同事會裝做很關(guān)心你的代碼,但其實他心里想著盡快地離開你。只有不正式的Code Review 才會讓你和評審者放輕松,人只有放松了,才會表現(xiàn)得很真實,很真誠。記住 Review 只不過是一種形式,而只有在相互信任中通過相互 的討論得到了有意義和有建設(shè)性的建議和意見,那才是最實在的。不然,作者和評審者的關(guān)系 就會變成小偷和警察的關(guān)系。6.3、 盡可能的讓不同的人 Reivew你的代碼如果可能的話,不要總是只找一個人來Review你的代碼,不同的人有不同的思考方式,有不同的見解,所以,不同的人可以全面的從各個方面評論你的代碼。但不要太多了,人多嘴
11、雜反而適得其反,基本上來說,不要超過 3個人,這是因為,這是一個可以圍在一起討論的最大人員尺寸。下面是幾個優(yōu)點:?從不同的方向評審代碼總是好的。?會有更多的人幫你在日后維護(hù)你的代碼。這也是一個增加團(tuán)隊凝聚力的方法6.4、 保持積極的正面的態(tài)度程序員最大的問題就是 自負(fù)”,尤其當(dāng)我們Reivew別人的代碼的時候,我已經(jīng)見過無數(shù)的場面,程序員在Code Review 的時候,開始抨擊別人的代碼,質(zhì)疑別人的能力。太可笑了,我分析了一下,這類的程序員其實并沒有什么本事,因為他們指責(zé)對方的目的是想告訴大家自己有多么的牛,靠這種手段來表現(xiàn)自己的程序員,其實是就是傳說中所說的半瓶水”。所以,無論是代碼編寫者
12、,還是代碼審核者,都需要一種積極向上的正面的態(tài)度,編寫者需要能夠虛心接受別人的建議,因為 別人的建議是為了讓你做得更好;審核者也需要以一種積極的正面的態(tài)度向編寫者提意見,因為那 是和你在一個戰(zhàn)壕里的戰(zhàn)友。記住,你不是一段代碼,你是一個人!6.5、 學(xué)會享受 Code Reivew這可能是最重要的一個提示了,如果你到了一個人人都喜歡Code Reivew 的團(tuán)隊,那么,你會進(jìn)入到一個生機(jī)勃勃的地方,在那里,每個人都能寫出質(zhì)量非常好的代碼,在那里,你不需要經(jīng)理的 管理,團(tuán)隊會自適應(yīng)一切變化,他們相互學(xué)習(xí),相互幫助,不僅僅是寫出好的代碼,而且團(tuán)隊和其 中的每個人都會自動進(jìn)化,最關(guān)鍵的是,這個是一個團(tuán)
13、隊。7. Code Review 操作目前我們將Code Review分為兩個階段,開發(fā)互審?和?上級審查?兩個階段7.1、 開發(fā)互審任意兩名開發(fā)人員(建議不要固定配對,避免思維定勢)進(jìn)行交叉代碼審查,?代碼編寫者?準(zhǔn)備所開發(fā)的代碼相關(guān)的全部資料列表,包括需求、設(shè)計文檔、代碼工程、類、方法、配置文件、數(shù)據(jù)庫 修改、數(shù)據(jù)修改等全部資料的版本號等詳細(xì)信息,向?代碼審查者?全面介紹代碼的目標(biāo)和設(shè)計實現(xiàn)。代碼審查者?按照需求文檔、設(shè)計文檔、開發(fā)規(guī)范進(jìn)行代碼(業(yè)務(wù)、日志、測試)審查,代碼審查者 將審查結(jié)果提交至 GIT,出現(xiàn)的問題由?代碼編寫者?進(jìn)行修改并由?代碼審查者?復(fù)審,復(fù)審結(jié)果 提交至GIT保留
14、。代碼審查者?對所審查的代碼負(fù)責(zé)。7.2、 上級檢查開發(fā)互審?fù)瓿珊?,由上級進(jìn)行 上級審查,流程與開發(fā)互審相同,對于三次復(fù)審仍未通過的代碼需要 代碼編寫者?組內(nèi)進(jìn)行檢討問題原因,并書面列出改進(jìn)計劃7.3、 沖突解決當(dāng)開發(fā)互審時對于檢查內(nèi)容出現(xiàn)爭議時由上級進(jìn)行協(xié)調(diào)解決或逐級向上協(xié)調(diào)解決。當(dāng)上級審查時出現(xiàn)爭議時逐級向上協(xié)調(diào)解決。所有問題解決原則為公司利益、團(tuán)隊利益、業(yè)務(wù)需求、設(shè)計文檔、規(guī)范文檔等為參考 標(biāo)準(zhǔn)。附錄I審核記錄審核記錄如同修改記錄一樣,直接記錄入代碼頭部,代碼審核者 修改審核記錄后提交代碼至GIT參考即可。之后的審核可以基于兩次審核間的變更利用對比工具進(jìn)行增量審核??蓞⒖既缦率纠悾海縩
15、gp_common/src/main/java/com/heepay/file/FileUtils.java代碼示例:/*名稱:文件操作工具類*創(chuàng)建者: 王曉 *創(chuàng)建時間:2016-06-21*創(chuàng)建描述:實現(xiàn)文件的創(chuàng)建、刪除、復(fù)制、壓縮、解壓以及目錄的創(chuàng)建、刪除、復(fù)制、壓縮解壓等功能*修改者: 李宗杰 *修改時間:2016-08-08*修改描述:添加注釋和代碼審核信息*修改者:*修改時間:*修改描述:*審核者:侯建春 *審核時間:2016-08-08*審核描述:格式可以*一行寫不下再次一行*再來一行*審核者:李宗杰 *審核時間:2016-08-08*審核描述:審核不通過,log沒有使用log4j2*審核者:審核時間:*審核描述:*/附錄II審核結(jié)果審核結(jié)果建議以表格的形式描述,每個問題分別列出,可以通過標(biāo)注行號來具體指明位置,給出合 理的修改意見并說明標(biāo)準(zhǔn)。為了方便記錄和查詢以及代碼編寫者修改和復(fù)審,建議審核結(jié)果寫入commit message 中, 由于 commit message只能提交文本, 我們以軟表格的形式描述。 對于commit message的書寫規(guī)范,查
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鍋爐運(yùn)行值班員測試驗證知識考核試卷含答案
- 手工皂制皂師崗前可持續(xù)發(fā)展考核試卷含答案
- my city作文英語作文少余50字
- 幼兒園老師請假條 樣本
- 2025年機(jī)力通風(fēng)冷卻塔合作協(xié)議書
- 2025年鋰電池配套試劑項目合作計劃書
- 中國咳塞坦行業(yè)市場前景預(yù)測及投資價值評估分析報告
- 2025 小學(xué)一年級科學(xué)下冊鱗片的保護(hù)意義課件
- 班主任師德培訓(xùn)課件模板
- 犬貓骨科術(shù)前溝通技術(shù)
- 吳江三小英語題目及答案
- 供水管道搶修知識培訓(xùn)課件
- 司法警察協(xié)助執(zhí)行課件
- 廣東物業(yè)管理辦法
- 業(yè)務(wù)規(guī)劃方案(3篇)
- 雙向晉升通道管理辦法
- 集團(tuán)債權(quán)訴訟管理辦法
- 上海物業(yè)消防改造方案
- 鋼結(jié)構(gòu)施工進(jìn)度計劃及措施
- 供應(yīng)商信息安全管理制度
- 智慧健康養(yǎng)老服務(wù)與管理專業(yè)教學(xué)標(biāo)準(zhǔn)(高等職業(yè)教育??疲?025修訂
評論
0/150
提交評論