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

項目 檢查參數有效性

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

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]刪除
最新教學 更多>
  • 即將推出大事
    即將推出大事
    我決定從頭開始建立全端 Web 開發人員課程,從 HID 一直到伺服器和可擴展性。所有需要知道的,都將免費涵蓋免費! 以下是涵蓋的內容: 網際網路 互聯網是如何運作的? 什麼是HTTP? 瀏覽器及其運作方式? DNS 及其運作方式? 什麼是網域名稱? 什麼是託管? ...
    程式設計 發佈於2024-11-08
  • HTML 頁面的剖析
    HTML 頁面的剖析
    程式設計 發佈於2024-11-08
  • 設計有效資料庫的終極指南(說真的,我們是認真的)
    設計有效資料庫的終極指南(說真的,我們是認真的)
    Alright, you’ve got a shiny new project. Maybe it's a cutting-edge mobile app or a massive e-commerce platform. Whatever it is, behind all that glitz ...
    程式設計 發佈於2024-11-08
  • 使用 html css 和 javascript 的圖像輪播旋轉幻覺
    使用 html css 和 javascript 的圖像輪播旋轉幻覺
    程式碼 旋轉影像輪播 身體 { 顯示:柔性; 調整內容:居中; 對齊項目:居中; 高度:100vh; 保證金:0; 背景顏色:#0d0d0d; 溢出:隱藏; ...
    程式設計 發佈於2024-11-08
  • 如何開始 Web 開發
    如何開始 Web 開發
    介绍 Web 开发是当今最受欢迎的职业之一,对于那些对 前端(用户看到的内容)和 后端(服务器逻辑)感兴趣的人来说)。如果您刚刚起步,想知道从哪里开始或者作为开发者可以赚多少钱,本指南将为您提供清晰的入门路径和资源。 什么是网页开发? 网络开发分为两大区域: 前端:...
    程式設計 發佈於2024-11-08
  • 如何在不使用 Composer 本身的情況下安裝 Composer PHP 套件?
    如何在不使用 Composer 本身的情況下安裝 Composer PHP 套件?
    如何在沒有Composer 的情況下安裝Composer PHP 軟體包在本文中,我們將解決在沒有Composer 工具的情況下安裝Composer PHP 軟體包的挑戰本身。當您遇到 Composer 對於您的工作流程不可用或不切實際的情況時,此方法非常有用。 識別依賴關係第一步是識別包所需的依賴...
    程式設計 發佈於2024-11-08
  • 如何在 Matplotlib 中繪製不同顏色的線條?
    如何在 Matplotlib 中繪製不同顏色的線條?
    繪製不同顏色的線在 matplotlib 中,可以透過多種方法來繪製具有不同顏色段的線。選擇取決於要繪製的線段數量。 線段數量較少如果只需要幾條線段,如繪製軌跡,請考慮以下事項:import numpy as np import matplotlib.pyplot as plt # Generate...
    程式設計 發佈於2024-11-08
  • 為什麼 Safari 無法處理「2010-11-29」格式的日期?
    為什麼 Safari 無法處理「2010-11-29」格式的日期?
    Safari 的日期解析怪癖為什麼Safari 在遇到“2010-11-29”等格式的日期時會拋出“無效日期”錯誤',而其他瀏覽器處理這些日期沒有問題?這種不一致的行為可能會讓 Web 開發人員感到沮喪。 問題的根源在於 Safari 對日期字串中破折號 (-) 的解釋。雖然大多數瀏覽器將破...
    程式設計 發佈於2024-11-08
  • 我應該使用哪些工具來進行 Python 套件管理? Distutils、Setuptools、Distribute 和 Distutils2 指南。
    我應該使用哪些工具來進行 Python 套件管理? Distutils、Setuptools、Distribute 和 Distutils2 指南。
    探索Distribute、Distutils、Setuptools 和Distutils2 之間的區別Python 套件管理隨著時間的推移不斷發展,引入了各種用於不同目的的工具。了解這些工具之間的細微差別對於高效的軟體分發和安裝至關重要。 Distutils:標準函式庫遺產Distutils 已合併...
    程式設計 發佈於2024-11-08
  • 如何在沒有 syscall 或 scrypt 的情況下安全地在 Golang/App Engine 中對密碼進行雜湊處理?
    如何在沒有 syscall 或 scrypt 的情況下安全地在 Golang/App Engine 中對密碼進行雜湊處理?
    在Golang/App Engine 中安全地散列密碼,無需系統調用或scrypt雖然bcrypt 和scrypt 通常用於密碼散列,但它們可能不是由於系統調用可訪問性,適合App Engine。作為替代方案,請考慮利用 go.crypto 程式庫進行安全密碼雜湊。 go.crypto 套件提供對 ...
    程式設計 發佈於2024-11-08
  • 使用 JDK 記錄促進 Spring 開發的真實範例
    使用 JDK 記錄促進 Spring 開發的真實範例
    In this article, we'll explore the various scenarios where JDK 14 Records prove to be a game-changer. Unlocking the Power of JDK 14 Records: A Simplif...
    程式設計 發佈於2024-11-08
  • 如何將 PHP 日期轉換為 MySQL「YYYY-MM-DD」格式?
    如何將 PHP 日期轉換為 MySQL「YYYY-MM-DD」格式?
    將 PHP 日期轉換為 MySQL 格式在 PHP 和 MySQL 中處理日期時,必須正確格式化它們以正確插入資料庫。 問題來了:如何將 PHP 日期轉換為 MySQL 格式的「YYYY-MM-DD」? 假設我們在PHP 中有一個日期欄位設定為:$date = mysql_real_escape_s...
    程式設計 發佈於2024-11-08
  • 如何在 CSS 中使用點分 ID 定位 HTML 元素?
    如何在 CSS 中使用點分 ID 定位 HTML 元素?
    帶有點 ID 的元素的 CSS ID 選擇CSS 規範允許 ID 選擇器識別特定的 HTML 元素。但是,當 ID 包含句點 (.) 時,就會出現問題。 CSS ID 選擇器本身並不支援此類 ID。 儘管 CSS 規範中沒有明確提及,但我們假設 CSS ID 選擇器將帶有句點的 ID 視為標籤名稱和...
    程式設計 發佈於2024-11-08
  • 如何在 Windows 上安裝 cURL 並修復常見錯誤?
    如何在 Windows 上安裝 cURL 並修復常見錯誤?
    在Windows 上安裝cURL要解決在Windows 上安裝cURL 時遇到的錯誤,請依照下列步驟操作:1.下載並解壓縮cURL造訪https://curl.haxx.se/dlwiz?type=bin。 選擇您的作業系統:Windows /Win32 for 32-位元系統或 64 位元系統的 ...
    程式設計 發佈於2024-11-08
  • 為什麼在指定初始大小時無法存取 ArrayList 中指派的空間?
    為什麼在指定初始大小時無法存取 ArrayList 中指派的空間?
    了解ArrayList 容量與大小問:如果指定初始大小,為什麼最初無法訪問為ArrayList 分配的空間?A: 混淆是由於誤解了ArrayList 的大小和容量之間的差異。 ArrayList 的大小表示它包含的元素數量,而容量表示最大元素數量在需要分配更多記憶體之前它可以容納的元素數量。設定初始...
    程式設計 發佈於2024-11-08

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

Copyright© 2022 湘ICP备2022001581号-3