后端代碼評審(Code Review)


代碼審查(Code Review)是軟件開發中常用的手段,和QA測試相比,它更容易發現和架構以及時序相關等較難發現的問題,還可以幫助團隊成員提高編程技能,統一編程風格等。

一.審查原因(Why)

持續、有效的開展代碼走查,將會收獲許多收益,具體表現在:

1. 能及時發現代碼中的Bug,保證版本質量。

2. 提升代碼的可讀性、可維護性,建立團隊共同的編碼風格。

3. 有利於知識共享,打破技能壁壘,避免單點故障。

4. 通過展示自己的優秀代碼和設計思路,提升了個人成就感。

5. 通過講解自己的代碼,對個人溝通能力也是一種提升。

6. 提高開發者的對編碼的責任感。

 

二.審查對象內容(What)

前后端所有研發人員審查周期內提交的代碼及數據庫腳本

如代碼數量過多可挑選部分重要功能模塊進行

三.審查人員(Who)

代碼走查不只是開發人員的事情!需要多種角色同時參與,因為走查活動不僅僅要看功能是否實現了,還要看代碼和設計是否一致?測試用例是否完備和有效?

1. 主持人(老王)

負責主持整個走查活動,控制時間和進度。

2. 講解人(被審查研發人員)

負責對走查的代碼進行講解。

3. 評審人(其他研發人員,測試,UI)

負責對走查代碼提出問題,建議。

 

四.審查地點(Where)

會議室

 

五.周期計划(When

一周一次,時間每周四下午17:30

六.審查規范方法(How)

6.1編碼習慣:(關注點-框架使用與基本功)

1. 沒有被使用的變量要刪除。

2. 針對不同的 Exception 要用不同的 catch 語句,而不是一個 Exception 解決所有問題。

3. 針對變量,方法和類要用相同的命名方法。

4. 常量應該被寫在獨立的常量類中。

5. 每行代碼的尾部不要有多余的空格。在什么地方放置空格和斷行符?使用制表符還是空格?大括號如何放置?

6. 對於括號,循環,if語句等等要用統一的格式。

7. 每一個單獨的方法不應該超過100行。

8. 一個單獨的語句不應該超過編輯器的可視區域,它可以被拆分成幾行。

9. 檢查 String 對象既不是null也不是空的最好方法是 if(“”.equals(str))

10. 假如類有很多成員變量,並且實例化的時候只需要少數變量傳入的話,最好使用靜態工廠方法,而不是重載構造函數。

11. 給方法添加適當的訪問控制,而不是所有都是 public。

12. 遵守項目中使用的框架的最佳實踐建議,例如 Spring,Struts,Hibernate,jQuery。

13. 域、常量、變量、參數、類的名稱是否符合標准?命名是否太短?

 

6.2業務實現:(關注點-設計思路與業務邏輯)

1. 如果類似的邏輯被使用了多次,應該把它寫成一個幫助類,然后在多出調用。

2. 鼓勵使用 API 而不是重復編寫代碼解決相同的問題。

3. 要強調代碼的單元測試。

4. 任何新加的代碼不應該破壞已有的代碼。

6.3安全(關注點-系統安全性sql注入等

1. 任何代碼都不能執行用戶的輸入,除非轉義過了。這個常常包含 JavaScript 的 eval 函數和 SQL 語句。

2. 禁止那些在短時間內提交非常多請求的 IP。

3. 任何類,變量,還有方法都應該有正確的訪問域。

6.4性能(關注點-系統運行消耗和可擴展性

1. 所有數據庫和文件操句柄在不需要的時候都應該被關閉。

2. SQL 語句的寫法會導致性能千差萬別。

3. 鼓勵創建不可變(immutable)的類。

4. 類似的邏輯代碼,盡量通過 if else 語句來實現更多的重用。

5. 盡量避免使用重對象(heavy objects)。

6. 如果是 Web 項目,請檢查是否使用了合適的圖片尺寸,CSS sprites 和瀏覽器緩存等技術。

7. 全局都需要的信息保存在 application context 中。

8.檢查代碼是否包含無效代碼、多余變量、可復用方法、不必要的開銷

9.操作碼,異常碼是否符合統一要求規范

6.5注釋:關注點-代碼可讀性注釋清晰完善

1.在有處理邏輯的代碼中,源程序有效注釋量必須在20%以上。

2.文件注釋:文件注釋寫入文件頭部。

3.類和接口的注釋:該注釋放在class定義之前,using或package關鍵字之后。

4.類和接口的注釋內容:類的注釋主要是一句話功能簡述、功能詳細描述,說明:可根據需要列出:版本號、生成日期、作者、內容、功能、與其它類的關系等。

5.類屬性、公有和保護方法注釋:寫在類屬性、公有和保護方法上面。用//來注釋,需要對齊被注釋代碼。

6.注釋的內容要清楚、明了,含義准確,防止注釋二義性。說明:錯誤的注釋不但無益反而有害

7.對於方法內部用throw語句拋出的異常,必須在方法的注釋中標明,對於所調用的其他方法所拋出的異常,選擇主要的在注釋中說明。對於非RuntimeException ,即throws子句聲明會拋出的異常,必須在方法的注釋中標明。

6.6新技術:關注點-適用性和擴展學習

1.代碼使用新技術是否有效,是否最優,一起討論學習

推薦閱讀  

【遠程醫療】互聯網醫院 衛健委數據上報平台技術方案
【技術選型】你的公司,你的項目真的適合微服務嗎?
【划划重點】論大數據中主數據的重要性
【視頻問診】ffmpeg+HLS直播與回放技術
【遠程醫療】智能導診技術方案


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM