91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

代碼檢查服務是如何降低Billion DollarMistake NPE風險

發布時間:2021-12-24 16:33:47 來源:億速云 閱讀:117 作者:柒染 欄目:開發技術

代碼檢查服務是如何降低Billion DollarMistake NPE風險,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

“空安全(Null Safety)”是Kotin最吸引Java開發者的特性之一, Kotlin類型系統的目標是消除Null reference的危險性。Tony Hoare在2019年QCon London上將Null reference稱為“my billion-dollar mistake”。所謂Null reference是許多編程語言最為常見的陷阱之一,指的是訪問Null reference的成員將導致null reference exception。在Java語言中,Nullreference通常等同于NullPointerException(即NPE)。

對于Java開發者來講,或許只有處理過了NPE,才能成為一名真正的Java開發者。NPE通常來講,會來自于以下場景:

  • 調用了一個空對象的實例方法;

  • 訪問或者修改一個空對象的域成員;

  • 當數組是一個空對象時,取它的長度;

  • 對數組中的某些null元素進行范文或者修改;

  • 將null當做Throwable值拋出

如何防止NPE,簡單來講,主要是兩點要素:手段與方法、意識與經驗。Java開發者可以參考以下最佳實踐來防空:

  • 通過已知字符串常量而不是未知對象來調用equals()與equalsIgnoreCase()方法

  • 在valueOf()與toString()返回相同結果的地方優先使用valueOf()

  • 使用null安全的方法與庫

  • 避免從方法中返回null,而是返回空的collection或者array

  • 使用注解@NotNull和@Nullable

  • 在代碼中避免不必要的autoboxing和unboxing

  • 遵循Contract并定義合理的缺省值

  • 在Java 8中使用Optional

  • 雙重入參校驗

盡管Java開發者能力對于防空是至關重要的,然而人難免會有所失誤。為了進一步降低風險,華為云DevCloud建議項目或者產品團隊使用代碼檢查服務來檢查是否存在NPE。

1.準備工作

1.1   示例工程

Code4Benchmark是采用Java開發的示例工程,希望用于評估代碼質量評估工具或者云服務對代碼問題的檢查能力,例如空指針(Null Pointer)、資源泄露、SQL注入(SQL Injection)等。

對于空指針場景,目前主要是顯式解引用、前置判空、后置判空、空返回值等,代碼片段如下:

  • 顯式解引用: 直接對null對象解引用

圖7 問題詳情與修改建議

NPE是Java開發中的經典問題,華為云DevCloud代碼檢查服務提供的規則不止本文提到的3條規則,具體可以在“規則”中查看。在實際的項目開發中,用戶可以直接選擇“全面檢查規則”來進行全方位的代碼質量檢測,以提升代碼質量。

W. Edwards Deming曾說過“Inspectionis too late. Quality cannot be inspected into a product or servive. It must bebuilt into it.”本質上,軟件質量取決于工程師的意識、能力、方法與技能。然而,工程師的意識、能力、方法與技能需要不斷提升。因而, 華為云DevCloud 代碼檢查服務在軟件交付中仍然具有舉足輕重的地位,不僅可以及時發現代碼質量問題,而且可以強化工程師的預期行為,有助于提升工程師的意識、能力、方法與技能。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

npe
AI

望谟县| 宁南县| 肃北| 通化县| 泗洪县| 六安市| 芜湖市| 临泽县| 平和县| 昌江| 临桂县| 汉沽区| 定结县| 舟山市| 噶尔县| 遵化市| 新余市| 华容县| 海淀区| 霞浦县| 怀宁县| 益阳市| 潢川县| 巧家县| 景泰县| 沈阳市| 沛县| 高阳县| 阿瓦提县| 伽师县| 揭阳市| 剑阁县| 无为县| 外汇| 新源县| 宜宾市| 张家港市| 禄劝| 北安市| 巴里| 绥滨县|