Java 日期API:設計缺陷的遺留問題
Java 日期API,包含java.util.Date 和java.util.Calendar 類,長期以來一直存在因其複雜且有問題的設計而受到批評。由於幾個明顯的缺陷,這些類別被稱為「可怕的混亂」:
-
日期的可變性: Date 類別是可變的,允許直接修改其內部狀態。這破壞了物件不變性,這是現代軟體開發的關鍵原則。
-
時間的錯誤表示:日期表示時間戳,僅捕捉精確的時刻,而不是日期。這種時間和日期概念的合併帶來了不必要的複雜性,並可能阻礙日期操作。
-
轉換不便:沒有直接的方法在日期組件(例如日、月、年)之間進行轉換和一個 Date 物件。
-
日曆的笨拙用法:日曆是一個複雜的類,試圖統一不同的日曆系統合併為一個實體。它的介面很繁瑣,很難有效使用。
混亂的起源:
這些有缺陷的類別是如何進入 Java SDK 的?雖然有些問題回想起來可能很明顯,但它們最初的包含可能受到以下幾個因素的影響:
-
時間壓力:最初的API 是在Java 早期開發的,當時速度和效率至關重要。可變的 Date 類別當時可能被視為一種效能最佳化。
-
設計疏忽: Date 中時間和日期的合併以及在 Calendar 中概括日曆系統的嘗試可能會源於最初的設計規範缺乏明確性。
-
歷史限制:Java 一直不情願對其核心 API 進行重大更改,延續日期和日曆中的設計缺陷以保持向後相容性。
以上是為什麼 Java 的 Date API 被認為是設計災難?的詳細內容。更多資訊請關注PHP中文網其他相關文章!