Java生鮮電商平臺-生鮮系統代碼審查以及優化方案(小程式/APP)

来源:https://www.cnblogs.com/jurendage/archive/2020/06/01/13023125.html
-Advertisement-
Play Games

Java生鮮電商平臺-生鮮系統代碼審查以及優化方案(小程式/APP) 說明:Java生鮮電商平臺-生鮮系統代碼審查以及優化方案(小程式/APP) 代碼審查也就是我們常說的:CodeReview,常見的生鮮電商小程式或者APP中CodeReview有以下的規範與目標: 1. 目標和原則 提高代碼質量, ...


Java生鮮電商平臺-生鮮系統代碼審查以及優化方案(小程式/APP)

 

說明:Java生鮮電商平臺-生鮮系統代碼審查以及優化方案(小程式/APP)

           代碼審查也就是我們常說的:CodeReview,常見的生鮮電商小程式或者APP中CodeReview有以下的規範與目標:

 

         1. 目標和原則

  1. 提高代碼質量,及早發現潛在缺陷,降低修改/彌補缺陷的成本
  2. 促進團隊內部知識共用,提高團隊整體水平
  3. 評審過程對於評審人員來說,也是一種思路重構的過程,幫助更多的人理解系統
  4. 是一個傳遞知識的手段,可以讓其它並不熟悉代碼的人知道作者的意圖和想法,從而可以在以後輕鬆維護代碼
  5. 可以被用來確認自己的設計和實現是一個清楚和簡單的
  6. 鼓勵相互學習對方的長處和優點
  7. 高效迅速完成Code Review

          2. 代碼審查清單 

        Code Review主要檢查代碼中是否存在以下方面問題:代碼的一致性、編碼風格、代碼的安全問題、代碼冗餘、是否正確設計以滿足需求(功能、性能)等等

  • 完整性檢查代碼是否完全實現了設計文檔中提出的功能需求代碼是否已按照設計文檔進行了集成和Debug代碼是否已創建了需要的資料庫,包括正確的初始化數據代碼中是否存在任何沒有定義或沒有引用到的變數、常數或數據類型
  • 一致性檢查代碼的邏輯是否符合設計文檔代碼中使用的格式、符號、結構等風格是否保持一致
  • 正確性檢查代碼是否符合制定的標準所有的變數都被正確定義和使用所有的註釋都是準確的所有的程式調用都使用了正確的參數個數
  • 可修改性檢查代碼涉及到的常量是否易於修改(如使用配置、定義為類常量、使用專門的常量類等)代碼中是否包含了交叉說明或數據字典,以描述程式是如何對變數和常量進行訪問的代碼是否只有一個出口和一個入口(嚴重的異常處理除外)
  • 可預測性檢查代碼所用的開發語言是否具有定義良好的語法和語義是否代碼避免了依賴於開發語言預設提供的功能代碼是否無意中陷入了死迴圈代碼是否是否避免了無窮遞歸
  • 健壯性檢查異常處理和清理(釋放)資源代碼是否採取措施避免運行時錯誤(如數組邊界溢出、被零除、值越界、堆棧溢出等)
  • 結構性檢查程式的每個功能是否都作為一個可辯識的代碼塊存在迴圈是否只有一個入口
  • 可追溯性檢查代碼是否對每個程式進行了唯一標識是否有一個交叉引用的框架可以用來在代碼和開發文檔之間相互對應代碼是否包括一個修訂歷史記錄,記錄中對代碼的修改和原因都有記錄是否所有的安全功能都有標識
  • 可理解性檢查註釋是否足夠清晰的描述每個子程式是否使用到不明確或不必要的複雜代碼,它們是否被清楚的註釋使用一些統一的格式化技巧(如縮進、空白等)用來增強代碼的清晰度是否在定義命名規則時採用了便於記憶,反映類型等方法每個變數都定義了合法的取值範圍代碼中的演算法是否符合開發文檔中描述的數學模型
  • 可驗證性檢查代碼中的實現技術是否便於測試
  • 可重用性DRY(Do not Repeat Yourself)原則:同一代碼不應該重覆兩次以上考慮可重用的服務,功能和組件考慮通用函數和類
  • 可擴展性輕鬆添加功能,對現有代碼進行最小的更改。一個組件可以被更好的組件替換
  • 安全性進行身份驗證,授權,輸入數據驗證,避免諸如SQL註入和跨站腳本(XSS)等安全威脅 ,加密敏感數據(密碼,信用卡信息等)
  • 性能使用合適的數據類型,例如StringBuilder,通用集合類懶載入,非同步和並行處理緩存和會話/應用程式數據

         代碼檢查包括不局限於上述清單,提交人應在本地自我完成代碼格式、架構設計、面向對象分析與設計等檢查。備註:

  • Java服務端開發必須遵循阿裡巴巴Java開發手冊(終極版),IDEA中安裝相關插件有告警提示不允許提交合併

      3.Code Review的步驟

  1. 代碼編寫者和代碼審核者坐在一起,由代碼編寫者按照UC依次講解自己負責的代碼和相關邏輯,從Web層->DAO層;
  2. 代碼審核者在此過程中可以隨時提出自己的疑問,同時積極發現隱藏的bug;對這些bug記錄在案。
  3. 代碼講解完畢後,代碼審核者給自己安排幾個小時再對代碼審核一遍。代碼需要一行一行靜下心看。同時代碼又要全面的看,以確保代碼整體上設計優良。
  4. 代碼審核者根據審核的結果編寫“代碼審核報告”,“審核報告”中記錄發現的問題及修改建議,然後把“審核報告”發送給相關人員。
  5. 代碼編寫者根據“代碼審核報告”給出的修改意見,修改好代碼,有不清楚的地方可積極向代碼審核者提出。
  6. 代碼編寫者 bug fix完畢之後給出反饋。
  7. 代碼審核者把Code Review中發現的有價值的問題更新到"代碼審核規範"的文檔中,對於特別值得提醒的問題可群發email給所有技術人員。

備註:Code Review必備的文檔:“Code Review規範”文檔:記錄代碼應該遵循的標準。代碼審核者根據這些標準來Code Review代碼,同時在Code Review過程中不斷完善該文檔。

4.Code Review的執行

準備階段

  1. 評審規範和標準
  2. 在CR前設計確定評審規範和標準是必要,通過規範和標準我們在審查過程中可以有據可依,有理可循,而且還可以做到標準統一。
  3. 選擇CR活動的參與者
  4. 在CR開始前,必須把本次CR活動的對象、審查內容以及審查的規範和標準通過email通報給所有的參與者。
  5. 選擇CR活動的實施方式
  6. CR活動有很多形式可供我們選擇,我們可以根據實際情況選擇桌面式CR、演示講解式CR、一對一的座位CR等等。(一般按新增功能桌面式CR、里程碑功能演示講解式CR、BUG修複一對一的座位CR)

5.實施階段

充分的事前準備,只是做好CR活動的前提,在CR實施過程中,我們要做好以下工作。

  1. 準確記錄
  2. 對於CR過程發現的問題,我們必須清晰準確的記錄,可以使用問題點記錄單,明確記錄的項目和內容。
  3. 講解與提問
  4. CR過程中,要採用代碼作者講解和審查者提問方式。審查者不能只在發現問題時提問,同時也要根據本次審查的內容要求代碼作者對某個特定問題的講解。
  5. 逐項審查
  6. 對事前確定的審查內容,要逐項審查,不能因為時間不足等因素一掃而過。
  7. 註意氣氛
  8. 實施審查時,要營造一個討論問題、解決問題的氛圍,不能把審查會搞成批判會,這樣會影響相關人員的積極性。

6.事後跟蹤

  1. 確認發現的問題 CR結束後,對發現的問題,首先需要確定以下內容。
  2. 問題點的難易程度以及影響的範圍;
  3. 解決問題的責任者和問題點修正結果的確認者;
  4. 解決問題點的時限。
  5. 修正問題責任者 對於修正問題責任者,在問題點的修正過程中,要三方面內容的記錄。問題點的原因;
  6. 解決問題點的對策;
  7. 修正的內容。

修正結果確認者做為修正結果的確認者,必須按照事前約定的時限及時的對修正結果進行全面的確認

7.註意事項

  • 經常進行Code Review

(1)要Review的代碼越多,那麼要重構,重寫的代碼就會越多。而越不被程式作者接受的建議也會越多,唾沫口水戰也會越多。(2)程式員代碼寫得時候越長,程式員就會在代碼中加入越來越多的個人的東西。 (3)越接近軟體發佈的最終期限,代碼也就不能改得太多。

  • Code Review不要太正式,而且要短

忘了那個代碼評審的Checklist吧,走到你的同事座位跟前,像請師父一樣請他坐到你的電腦面前,然後,花5分鐘給他講講你的代碼,給他另外一個5分鐘讓他給你的代碼提提意見,這比什麼都好。而如果你用了一個Checklist,讓這個事情表現得很正式的話,下麵兩件事中必有一件事會發生:(1)只有在Checklist上存在的東西才會被Review。(2)Code Reviews 變成了一種禮節性的東西,你的同事會裝做很關心你的代碼,但其實他心裡想著儘快地離開你。只有不正式的Code Review才會讓你和評審者放輕鬆,人只有放鬆了,才會表現得很真實,很真誠。記住Review只不過是一種形式,而只有在相互信任中通過相互的討論得到了有意義和有建設性的建議和意見,那才是最實在的。不然,作者和評審者的關係就會變成小偷和警察的關係。

  • 儘可能的讓不同的人Review你的代碼

如果可能的話,不要總是只找一個人來Review你的代碼,不同的人有不同的思考方式,有不同的見解,所以,不同的人可以全面的從各個方面評論你的代碼。但不要太多了,人多嘴雜反而適得其反,基本上來說,不要超過3個人,這是因為,這是一個可以圍在一起討論的最大人員尺寸。 下麵是幾個優點:(1)從不同的方向評審代碼總是好的。(2)會有更多的人幫你在日後維護你的代碼。(3)這也是一個增加團隊凝聚力的方法。

  • 保持積極的正面的態度

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

  • 學會享受Code Review

這可能是最重要的一個提示了,如果你到了一個人人都喜歡Code Review的團阿,那麼,你會進入到一個生機勃勃的地方,在那裡,每個人都能寫出質量非常好的代碼,在那裡,你不需要經理的管理,團隊會自適應一切變化,他們相互學習,相互幫助,不僅僅是寫出好的代碼,而且團隊和其中的每個人都會自動進化,最關鍵的是,這個是一個團隊。

 

 QQ:137071249

共同學習QQ群:793305035


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、前言 在vue的視圖層與modal層進行數據交互的時,視圖層的數據傳入到modal層,modal層通過defineProperty來劫持每個元素,並綁定監聽事件進行監聽,一旦監聽到數據變化,就通過defineProperty的set函數重新更新視圖層。 二、使用Object.defineProp ...
  • 一、當用戶在瀏覽器地址欄中輸入網址,到看到頁面,經歷的步驟 tips:hexo自己搭一個博客 1.解析輸入的URL地址 傳輸協議(把信息在客戶端和伺服器端進行傳遞,類似於快遞小哥) http 超文本傳輸協議(傳輸的內容除了文本,還有可能是其它類型:二進位編碼、BASE64碼、文件流等等) https ...
  • 不管你是做哪個語言的,只要是個程式員都懂: 哈哈啥哈哈哈 來跟我一起學習java吧,做個牛b的程式員。我們一起來敲bug吧 “大清亡於閉關鎖國,學習技術需要交流和資料”。 在這裡我給大家準備了很多的學習資料免費獲取,包括但不限於技術乾貨、大廠面試題系列、技術動向、職業生涯等一切有關程式員的分享. w ...
  • # 5.Utilities:工具 - 1. 邊框 中文網站邊框部分:http://bs4.vx.link/index.html?tmpui_page=/pages/utilities - 2. 清除浮動 - 3. 關閉圖標 - 4. 顏色 - 5. 顯示 3.x版本顯示只有三種:block, inl ...
  • 一、 1、打開方式 打開Chrome瀏覽器,按下F12或者右擊空白處然後點擊檢查 最左邊是顯示效果,中間是html代碼,右邊是html樣式。 2、樣式的修改 點擊中間代碼框,左上角的小箭頭,然後點擊css樣式,可以直接修改屬性的值。也可以點擊鍵盤上的上下箭頭,對屬性的值進行修改 需要註意的是,調試工 ...
  • 平時常用的一些功能性函數 關於原生JS 文件大小單位轉換 /** * @desc bytesToSize 位元組單位換算 * @param bytes 傳入以bit為單位的數據 */ const bytesToSize = function (bytes) { const k = 1024; if ( ...
  • Command模式屬於行為模式,作為大名鼎鼎的23個設計模式之一,Command模式理解起來不如工廠模式,單例模式等那麼簡單直白。究其原因,行為模式著重於使用,如果沒有編程實踐,確實不如創造模式那麼直白。我們先看看UML類圖。 估計很多同學看著圖就暈了,那麼多東西,Command和Concrete ...
  • J2SE(Java 2 Platform Standard Edition) J2ME(Java 2 Platform Micro Edtion) J2EE(Java 2 Platform Enterprise Edition) Java語言特點:開源 跨平臺(JVM) 面向對象等 JRE與JDK ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...