簡介:
雖然使用Java 8的Optional似乎很直觀作為處理可選或可為空參數的方法參數,它通常被認為是次優實踐。本文探討了此建議的原因。
可選參數的陷阱:
1。程式碼複雜度:
在參數中使用可選會在方法中引入條件邏輯。每個可選參數都需要檢查是否無效或存在,從而導致額外的分支和程式碼複雜度。
2.編譯器效率低:
Options 表示可空物件的包裝器,會產生不必要的開銷,並且在編譯方面的成本超過可空參數。
3.可選可為空性:
與可空參數(明確指示空值的可能性)不同,可選值本身可以為空。如果無意中傳遞了 null 可選值,這種不一致可能會導致錯誤。
4.冗餘:
可選的回傳類型已經傳達了可能缺少值的情況。在方法參數中重複此資訊是多餘的,並且可能會降低程式碼的可讀性。
替代選項:
不要在參數中使用可選,請考慮以下替代方案:
1。可空參數:
將參數宣告為可空(例如,使用 String p1、BigDecimal p2)並在方法內明確執行空檢查。這比使用Optional更清晰、更有效率。
2.方法重載:
為不同的參數組合建立單獨的方法重載(例如,calculateSomething()、calculateSomething(String)、calculateSomething(BigDecimal)、calculateSomething (String, BigDecimal))。這提供了更直觀和靈活的介面。
範例:
考慮問題中提供的範例程式碼。使用可空參數和顯式空檢查,呼叫程式碼將簡化為:
String p1 = otherObject.getP1().orElse(null); BigDecimal p2 = otherObject.getP2().orElse(null); int result = myObject.calculateSomething(p1, p2);
結論:
雖然Optional提供了一種方便的方法來處理可空值作為傳回類型,將其用作方法參數會帶來複雜性、低效率和冗餘。採用可為空參數或方法重載為處理可選或可為空輸入參數提供了更清晰、高效且可維護的方法。
以上是我應該在 Java 中使用可選作為方法參數嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!