代碼審查規(guī)范_第1頁
代碼審查規(guī)范_第2頁
代碼審查規(guī)范_第3頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、代碼審查標準1. Code Review 目的Code Review 是一種用來確認方案設計和代碼實現(xiàn)的質量保證機制,通過這個機制我 們可以對 代碼、測試過程 和 注釋 進行檢查。Code Review 主要用來在軟件工程過程中改良代碼質量,通過Code Review 可以達到如下目的: 在工程早期就能夠發(fā)現(xiàn)代碼中的 BUG。 幫助初級開發(fā)人員學習高級開發(fā)人員的經(jīng)驗,到達知識共享。 防止開發(fā)人員犯一些很常見,很普通的錯誤。 保證工程組人員的良好溝通。工程或產(chǎn)品的代碼更容易維護。2. Code Review的前提條件代碼提交審核前,開發(fā)者 必須確保代碼符合如下條件,審核者需要確保所有前提條件都已

2、滿足方可開始審查,同時也是審查的主要檢查點。所有代碼注釋清晰,語法正確,編譯通過。日志代碼完整,業(yè)務日志、系統(tǒng)日志分開,中文描述,脫敏處理,狀態(tài)變更,全部清晰明確。測試代碼覆蓋全局部支和流程,暫時統(tǒng)一使用工具Emma 各編譯器可下載對應插件進行Coverage Check 。工程引用關系明確,依賴關系清晰,配置文件描述。3. Code Review的審查范圍代碼的一致性、編碼風格、代碼的平安問題、脫敏問題、代碼冗余、是否正確設計以符 合設計要求性能、功能與設計文檔相同等等。3.1、完整性檢查(Completeness )代碼是否完全實現(xiàn)了設計文檔中所涉及的所有流程和功能點代碼是否已包含所有所需

3、的業(yè)務日志、系統(tǒng)日志、異常日志,日志內容是否完整,日志文件配置是否正確。代碼是否使用緩存等,配置信息是否正確可配置代碼中是否存在任何沒有定義或沒有引用到的變量、常數(shù)或數(shù)據(jù)類型等3.2、一致性檢查(Consistency ) 代碼的邏輯是否符合設計文檔 代碼中使用的格式、符號、結構等風格是否保持一致3.3、正確性檢查(Correctness ) 代碼是否符合制定的標準 所有的變量都被正確定義和使用 所有的注釋都是準確的 所有的程序調用都使用了正確的參數(shù)個數(shù)3.4、可修改性檢查(Modifiability) 代碼涉及到的常量是否易于修改(如使用配置、定義為類常量、使用專門的常量類等)代碼中是否包含

4、了交叉說明或數(shù)據(jù)字典,以描述程序是如何對變量和常量進行 訪問的代碼是否只有一個出口和一個入口(嚴重的異常處理除外)3.5、可預測性檢查(Predictability )代碼所用的開發(fā)語言是否具有定義良好的語法和語義 是否代碼防止了依賴于開發(fā)語言缺省提供的功能 代碼是否無意中陷入了死循環(huán)代碼是否防止了無窮遞歸3.6、健壯性檢查(Robustness )代碼是否采取措施防止運行時錯誤(如數(shù)組邊界溢出、被零除、值越界、堆棧溢出等)3.7、結構性檢查(Structuredness) 程序的每個功能是否都作為一個可辯識的代碼塊存在 循環(huán)是否只有一個入口3.8、可追溯性檢查(Traceability )代

5、碼是否對每個程序進行了唯一標識是否有一個交叉引用的框架可以用來在代碼和開發(fā)文檔之間相互對應 代碼是否包括一個修訂歷史記錄,記錄中對代碼的修改和原因都有記錄 是否所有的平安功能都有標識3.9、可理解性檢查(Understandability) 注釋是否足夠清晰的描述每個子程序 是否使用到不明確或不必要的復雜代碼,它們是否被清楚的注釋 使用一些統(tǒng)一的格式化技巧(如縮進、空白等)用來增強代碼的清晰度* 是否在定義命名規(guī)那么時采用了便于記憶,反映類型等方法 每個變量都定義了合法的取值范圍 代碼中的算法是否符合開發(fā)文檔中描述的數(shù)學模型3.10、可驗證性檢查(Verifiability)代碼中的實現(xiàn)技術是

6、否便于測試 測試代碼是否正確,是否覆蓋所有流程4. Code Review 的步驟1. 代碼編寫者 和 代碼審核者 坐在一起,由 代碼編寫者 按照設計文檔中的用例依次講解自己所寫的代碼和相關邏輯,可采用從前端到后臺的方式,例如從Web層-DAO 層。2. 代碼審核者 在此過程中可以隨時提出自己的疑問,同時積極發(fā)現(xiàn)隱藏的 bug ; 代碼編寫者和代碼審核者都要對這些bug記錄在案,代碼編寫者修改后再次提 交審核,代碼審核者對應bug記錄進行回驗。3. 代碼講解完畢后,代碼審核者 給自己安排幾個小時再對代碼審核一遍。4. 代碼需要一行一行靜下心看。同時代碼又要全面的看,以確保代碼整體上設計優(yōu)良。5

7、. 代碼審核者 根據(jù)審核的結果編寫代碼審核結果并將審核記錄和 審核結果提交至GIT,審核記錄 和 審核結果 參見附錄I審核記錄、附錄II審核結果。6. 代碼編寫者GIT pull并根據(jù) 審核結果給出的修改意見,修改好代碼,有不清 楚的地方可積極向代碼審核者提出。7. 代碼編寫者bug fix等全部修改完成后提交代碼審核者再次進行審核,通過審核那么代碼審核者更新本次審查結果并提交至GIT,審核通過對代碼不能再進行修改,任何已通過審核的代碼修改必須重新進行審核流程。8. 代碼審核者把Code Review中發(fā)現(xiàn)的有價值的問題更新到代碼標準的文檔中,對于特別值得提醒的問題可群發(fā)email或QQ給所有

8、技術人員。5. Code Review標準代碼審查的根底是我們的 設計文檔標準、代碼標準、日志標準、測試代碼標準,針對新 增的業(yè)務場景和設計尚未有標準對應時應先確立標準然后再進行代碼審核流程。6. Code Review 注意點6.1. 經(jīng)常進行 Code Review 要Review 的代碼越多,那么要重構,重寫的代碼就會越多。而越不被代碼編寫者接受的建議也會越多,唾沫口水戰(zhàn)也會越多。建議每一個功能,每一個用例完成后都可以進行審核,將大任務拆分為小任務進行。* 程序員代碼寫得時候越長,程序員就會在代碼中參加越來越多的個人的東西。 越接近軟件發(fā)布的最終期限,代碼也就不能改得太多。6.2. Co

9、de Review不要太正式,而且要短忘了那個代碼評審的 Checklist吧,走到你的同事座位跟前,像請師父一樣請他坐到你 的電腦面前,然后,花 5分鐘給他講講你的代碼,給他另外一個5分鐘讓他給你的代碼提提意見,這比什么都好。而如果你用了一個 Checklist,讓這個事情表現(xiàn)得很正式的話,下面兩件事中必有一件事會發(fā)生:* 只有在Checklist 上存在的東西才會被 Review。 Code Reviews變成了一種禮節(jié)性的東西,你的同事會裝做很關心你的代碼,但其實他心里想著盡快地離開你。只有不正式的Code Review才會讓你和評審者放輕松,人只有放松了,才會表現(xiàn)得很真實,很真誠。記住

10、Review只不過是一種形式,而只有在相互信任中通過相互的討論得到了有意義和有建設性的建議和意見,那才是最實在的。不然,作者和評審者的關系就會變成小偷和警察的關系。6.3. 盡可能的讓不同的人Reivew你的代碼如果可能的話,不要總是只找一個人來 Review你的代碼,不同的人有不同的思考方式, 有不同的見解,所以,不同的人可以全面的從各個方面評論你的代碼。但不要太多了,人多嘴雜反而適得其反,根本上來說,不要超過3個人,這是因為,這是一個可以圍在一起討論的最大人員尺寸。下面是幾個優(yōu)點:從不同的方向評審代碼總是好的。 會有更多的人幫你在日后維護你的代碼。 這也是一個增加團隊凝聚力的方法。64保持

11、積極的正面的態(tài)度程序員最大的問題就是 自負,尤其當我們Reivew別人的代碼的時候,我已經(jīng)見過無數(shù)的場面,程序員在 Code Review 的時候,開始抨擊別人的代碼,質疑別人的能力。太可笑了,我分析了一下,這類的程序員其實并沒有什么本領,因為他們指責對方的目 的是想告訴大家自己有多么的牛,靠這種手段來表現(xiàn)自己的程序員,其實是就是傳說中所說的半瓶水。所以,無論是代碼編寫者,還是代碼審核者,都需要一種積極向上的正面的態(tài)度,編寫者需要能夠虛心接受別人的建議,因為別人的建議是為了讓你做得 更好;審核者也需要以一種積極的正面的態(tài)度向編寫者提意見,因為那是和你在一個戰(zhàn)壕里的戰(zhàn)友。記住,你不是一段代碼,你

12、是一個人!6.5.學會享受 Code Reivew這可能是最重要的一個提示了,如果你到了一個人人都喜歡Code Reivew 的團隊,那么,你會進入到一個生機勃勃的地方,在那里,每個人都能寫出質量非常好的代碼,在 那里,你不需要經(jīng)理的管理,團隊會自適應一切變化,他們相互學習,相互幫助,不僅 僅是寫出好的代碼,而且團隊和其中的每個人都會自動進化,最關鍵的是,這個是一個 團隊。7. Code Review 操作7.1 開發(fā)互審任意兩名開發(fā)人員建議不要固定配對,防止思維定勢進行交叉代碼審查,代碼編寫者準備所開發(fā)的代碼相關的全部資料列表,包括需求、設計文檔、代碼工程、類、方法、配置文件、數(shù)據(jù)庫修改、數(shù)

13、據(jù)修改等全部資料的版本號等詳細信息,向代碼審查者全面介紹代碼的目標和設計實現(xiàn)。代碼審查者 按照需求文檔、設計文檔、開發(fā)規(guī)范進行代碼業(yè)務、日志、測試審查,代碼審查者 將審查結果提交至 GIT,出現(xiàn)的問題由 代碼編寫者 進行修改并由 代碼審查者 復審,復審結果提交至 GIT保存。代 碼審查者 對所審查的代碼負責。7.2 上級檢查開發(fā)互審完成后,由上級進行上級審查,流程與開發(fā)互審相同,對于三次復審仍未通過的代碼需要代碼編寫者組內進行檢討問題原因,并書面列出改良方案。7.3 沖突解決當開發(fā)互審時對于檢查內容出現(xiàn)爭議時由上級進行協(xié)調解決或逐級向上協(xié)調解決。當上級審查 時出現(xiàn)爭議時逐級向上協(xié)調解決。所有問

14、題解決原那么為公司利益、團隊利益、業(yè)務需求、設計文檔、標準文檔等為參考標準。附錄I審核記錄審核記錄如同修改記錄一樣,直接記錄入代碼頭部,代碼審核者 修改審核記錄后提交代碼至GIT參考即可。之后的審核可以基于兩次審核間的變更利用比照工具進行增量審核??蓞⒖既缦吕珙悾簄 gp_com mon /src/ma in /java/com/heepay/file/FileUtils.java代碼例如:王曉*創(chuàng)立時間:2021-06-21*創(chuàng)立描述:實現(xiàn)文件的創(chuàng)立、刪除、復制、壓縮、解壓以及目錄的創(chuàng)立、刪除、復制、壓縮解壓等功能*修改者:李宗杰*修改時間:2021-08-08*修改描述:添加注釋和代碼審核信息*修改者:*修改時間:*修改描述:*審核者:侯建春*審核時間:2016-08-08*審核描述:格式可以一行寫不下再次一審核時間:2021-08-08再來一行*審核者:李宗杰*審核者:*審核描述:審核不通過,*審核時間:log沒有使用*審核描述:Iog4j*/附錄II審核結果審核結果建議以表格的形式描述,每個問題分別列出,可以通過標注行號來具體指明位 置,給出合理的修改意見并說明標準。為了方便記錄和查詢以及代碼編寫者修改和復審,建議審核結果寫入 commit message 中,由于 commit message只能提交文本,我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論