」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 項目 檢查參數有效性

項目 檢查參數有效性

發佈於2024-11-08
瀏覽:800

Item  Verifique a validade dos parâmetros

章節:方法設計

  • 重點:方法設計的可用性、穩健性和靈活性。
  • 涵蓋範圍:參數和傳回值處理、方法簽章設計和文件。

第 49 項:檢查參數有效性

- 參數限制:
方法和建構子通常對參數值有限制(例如非負索引、非空引用)。
這些限制必須在方法開始時記錄並驗證。

- 驗證的重要性:
儘早偵測錯誤,以避免方法中出現意外故障或不正確行為。
不檢查參數的方法可能會導致難以調試的崩潰。

- 異常文件:
使用 @throws Javadoc 標記記錄違反約束時拋出的例外。
常見例外:IllegalArgumentException、IndexOutOfBoundsException、NullPointerException.

參數檢查範例:

public static int mod(int x, int y) {
    if (y 



- Objects.requireNonNull 的使用:
Java 7 中引入,用於檢查物件的可空性。
傳回驗證後通過的值:

this.m = Objects.requireNonNull(m, "Parâmetro 'm' não pode ser nulo");

- 範圍檢查 (Java 9):
checkFromIndexSize、checkFromToIndex 和 checkIndex 方法用於檢查清單和陣列中的索引。
彈性較差,主要用於集合。
**

  • 非公共方法中的參數檢定:** 對於非導出方法,使用斷言來檢查參數:
assert x > 0 : "Valor de x deve ser positivo";

- 特殊情況:
建構者應始終檢查儲存參數的有效性以供以後使用。
對於成本高昂的檢查可以例外,其中檢查在計算過程中是隱式的。

- 隱式驗證範例:
Collections.sort(List) 假設物件是相互比較的。驗證發生在排序過程中。

- 異常翻譯:
當隱式檢查拋出錯誤的異常時,使用“異常翻譯”來拋出正確的異常。

- 限制的彈性:
方法應設計得盡可能通用,並施加盡可能少的限制。

- 結論:
記錄並實施方法和建構函數的參數有效性檢查。練習對於避免將來的錯誤和促進調試至關重要。

版本聲明 本文轉載於:https://dev.to/giselecoder/item-49-verifique-a-validade-dos-parametros-dho?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 比較大型 csv 檔案 #eg38
    比較大型 csv 檔案 #eg38
    這是兩個結構相同的 csv 檔案(A 和 B)。兩者都使用KEY_A、KEY_B和KEY_C作為主鍵,兩者有不同的記錄。 使用Java以三種方式比較兩個文件,並將結果分別寫入新的csv文件。 1、找到主鍵相等且其他欄位值不相等的記錄,輸出其主鍵,然後輸出A的其他欄位和B的其他欄位。以下是預期結果:...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 中基於唯一屬性合併物件陣列?
    如何在 JavaScript 中基於唯一屬性合併物件陣列?
    在JavaScript 中基於唯一項組合數組合併數組可能是JavaScript 中的一項常見任務,特別是當需要基於以下項組合資料時具體標準。在此特定實例中,目標是組合基於共享 lineNumber 屬性的物件數組,從而產生具有 lineNumber 的物件數組和對應 cellWidth 值的數組。 ...
    程式設計 發佈於2024-11-08
  • 理解並創建 React 中的自訂 Hook
    理解並創建 React 中的自訂 Hook
    目录 先决条件 安装 介绍 什么是自定义 Hook? 什么时候应该创建自定义 Hook? 示例:创建自定义挂钩 第 1 步:识别可重用逻辑 第 2 步:将逻辑提取到自定义 Hook 中 第 3 步:使用自定义 Hook 自定义 Hook 的好处 自定义 Hook 的最佳实践 结论 ...
    程式設計 發佈於2024-11-08
  • 如何透過偵測瀏覽器標籤的焦點來優化瀏覽器標籤中的資源使用?
    如何透過偵測瀏覽器標籤的焦點來優化瀏覽器標籤中的資源使用?
    偵測瀏覽器標籤焦點以優化資源使用當網頁包含敏感資訊或執行消耗網路資源的密集操作時,管理焦點瀏覽器標籤的數量變得至關重要。偵測特定選項卡目前是否處於焦點狀態允許您實施最佳化資源使用的策略。 確定選項卡是否具有焦點的一種可靠的跨瀏覽器方法是利用 window.onfocus 和 window.onblu...
    程式設計 發佈於2024-11-08
  • Visual Studio 2012 提供哪些 C++11 功能?
    Visual Studio 2012 提供哪些 C++11 功能?
    探索Visual Studio 2012 中的C 11 功能隨著人們對Visual Studio 2012(VS2010 的後繼者)的期望不斷增強,開發人員也迫不及待了解它帶來了哪些C 11 功能。 Visual Studio 2012 中的新C 11 功能雖然Visual Studio 2010 ...
    程式設計 發佈於2024-11-08
  • Java 對企業軟體架構的影響以來 Java 開發實踐的演變
    Java 對企業軟體架構的影響以來 Java 開發實踐的演變
    Java has long been a cornerstone of enterprise software development, offering a robust platform for building scalable and maintainable applications. ...
    程式設計 發佈於2024-11-08
  • 如何在 Python 中同時將子進程輸出重新導向到檔案和終端機?
    如何在 Python 中同時將子進程輸出重新導向到檔案和終端機?
    如何在Python中將子程序的結果同時輸出到文件和終端當使用subprocess.call()時,可以指定檔案描述符作為outf 和errf 將stdout 和stderr 重定向到特定檔案。但是,這些結果不會同時顯示在終端機中。 使用Popen 和線程的解決方案:為了克服這個問題,我們可以直接利用...
    程式設計 發佈於2024-11-08
  • 關係或能力,這兩個標準都被使用
    關係或能力,這兩個標準都被使用
    在社會上,評價一個人的能力和價值時,往往有兩種不同的標準:一是“以關係為準”,二是“以能力為準” 。這兩個標準都體現在不同的文化、產業和個人價值觀中,每個標準都有自己的支持者和反對者。 在程式語言中,有兩種​​標準以不同的方式組織程式碼,將資料結構連結到函數。本文將簡要討論這兩個通用標準的應用和作...
    程式設計 發佈於2024-11-08
  • 為什麼我找不到遠距工作?
    為什麼我找不到遠距工作?
    這不是一篇關於挫折感的文章,而是我在過去一年中一直在探索的現實。儘管透過各種遠距工作平台並利用 LinkedIn 進行申請,但我還沒有獲得一次面試機會。 我是孟加拉國達卡的 ReactJS、NextJS 和 JavaScript 開發人員,我忍不住要問——我錯過了什麼?我有什麼做得不對的地方,還是...
    程式設計 發佈於2024-11-08
  • Litlyx - 漏斗事件簡介
    Litlyx - 漏斗事件簡介
    Litlyx 正成為一把瑞士軍刀,作為收集網路分析的一體化工具。 實施非常簡單,只需不到 30 秒! 最好的部分?我們提供自訂事件跟踪,具有最簡單的用戶體驗。 在我們的儀表板中,一切都設計得直觀且用戶友好(儘管我們還沒有聘請設計師,哈哈)。 漏斗圖 漏斗圖的想法來自我們的一位...
    程式設計 發佈於2024-11-08
  • 如何從頭開始製作 URL 縮短器
    如何從頭開始製作 URL 縮短器
    從頭開始製作應用程式是我最喜歡的學習應用程式運作方式的方式。這篇文章將討論如何從頭開始製作 URL 縮短器。 URL 縮短器非常容易製作,在我看來,這是初學者學習語言的好方法。更困難的部分是添加自訂網域、分析、分組連結以及在 URL 縮短服務之上添加的其他功能。因此,您可以按照以下方法從頭開始製作...
    程式設計 發佈於2024-11-08
  • 快速工程(針對懶惰的程式設計師):準確地取得您想要的程式碼(甚至更多,從 ChatGPT 中取得)
    快速工程(針對懶惰的程式設計師):準確地取得您想要的程式碼(甚至更多,從 ChatGPT 中取得)
    比尔盖茨已经说了这一切......做一个懒惰的程序员!. 作为一名程序员,没有什么比立即运行的代码更好的了——没有错误,没有无休止的调试。通过遵循某些提示技术,您不仅可以让 ChatGPT 编写代码,还可以编写优化的、功能齐全且有文档记录的代码,包括边缘案例、测试,甚至性能优化。 但首先... ...
    程式設計 發佈於2024-11-08
  • React、Vue 和 Svelte 中的 JavaScript 框架 – 選擇哪一個?
    React、Vue 和 Svelte 中的 JavaScript 框架 – 選擇哪一個?
    JavaScript 框架在过去几年中取得了显着的发展,成为现代 Web 应用程序的支柱。 2024 年,React、Vue 和 Svelte 脱颖而出,成为最受欢迎的框架,每个框架都有其独特的优点和缺点。如果您正在构建新的 Web 应用程序,选择正确的框架对于项目的成功至关重要。 在本文中,我们将...
    程式設計 發佈於2024-11-08
  • JavaScript 如何控制逾時執行並確定剩餘時間?
    JavaScript 如何控制逾時執行並確定剩餘時間?
    JavaScript 中的暫停和恢復逾時使用 JavaScript 時,可能需要控制非同步操作的流程,例如逾時。在這裡,我們探索暫停和恢復活動逾時的方法,以及檢索當前逾時的剩餘時間。 暫停和恢復逾時要暫停逾時,您可以使用包裝器攔截 window.setTimeout 呼叫並提供必要功能的函數。包裝函...
    程式設計 發佈於2024-11-08
  • 提高 Spring Boot 應用程式的效能 - 第一部分
    提高 Spring Boot 應用程式的效能 - 第一部分
    啟動Spring Boot應用程式時,我們通常使用啟動器提供的預設設置,這對於大多數情況來說已經足夠了。但是,如果我們需要效能,則可以進行具體調整,如本文第一部分所示。 將 Tomcat 替換為另一個 servlet 容器 應用程式web、RESTFul,使用Spring MVC,...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3