Noda Time giữ nhiều hơn mã nội bộ của nó. Điều này làm cho nó kém linh hoạt hơn, ở chỗ bạn thực sự không thể tạo hệ thống lịch của riêng mình - nhưng cũng có nghĩa là API đơn giản hơn cả để tìm hiểu và sử dụng.
Nullity gần như luôn luôn là một lỗi trong Noda Time. Không còn "nếu bạn chuyển thành null cho múi giờ, chúng tôi sẽ chỉ sử dụng mặc định hệ thống." Bạn cần phải rõ ràng.
Nói về mặc định ... chúng tôi không sử dụng đồng hồ hệ thống làm mặc định. Chúng tôi đã có một IClock
giao diện riêng với SystemClock
việc triển khai, nhưng không có gì mặc định là "thời điểm hiện tại".
Ngoài các lớp xây dựng cụ thể, mọi thứ đều bất biến. Tôi nghĩ MutableDateTime
(et al) trong Joda Time là một sai lầm.
Chúng tôi đã tách hệ thống lịch và múi giờ với nhau, vì chúng thực sự rất khác nhau. Vì vậy, một LocalDate
biết về hệ thống lịch mà nó sử dụng, nhưng không phải là múi giờ, ví dụ.
Cách giải quyết các giá trị ngày / thời gian cục bộ thành các giá trị ngày / thời gian được khoanh vùng gần với JSR-310 hơn Joda Time. Chúng tôi không chỉ xử lý sự mơ hồ / bỏ qua thời gian theo một cách cụ thể: chúng tôi làm cho người dùng nói những gì họ muốn.
Joda Time có nhiều nơi cố gắng đoán những gì bạn muốn từ một API được gõ yếu (ví dụ: mới Instant(Object)
). Noda Time tránh điều này đến mức có thể - nó rõ ràng hơn nhiều.
Noda Time chặt chẽ hơn về loại số học bạn có thể thực hiện trên loại nào. Vì vậy, ví dụ, bạn không thể thêm a Period
vào ZonedDateTime
, bởi vì có những điều kỳ lạ xung quanh việc chuyển đổi tiết kiệm ánh sáng ban ngày có thể làm mọi thứ rối tung lên. Thay vào đó, chúng tôi khuyến khích người dùng chuyển đổi sang LocalDateTime
, thực hiện nhiều số học mà họ muốn trong bối cảnh không được khoanh vùng, sau đó chuyển đổi lại.
Noda Time sử dụng tính kế thừa khá ít - hệ thống phân cấp trong Joda Time cực kỳ sâu sắc và phức tạp. Thực tế là rất nhiều Thời gian Noda dựa trên các loại giá trị thực sự thực thi điều này, nhưng có một số nơi chúng tôi vẫn đang sử dụng kế thừa lớp, nhưng tôi đã quản lý để thu hẹp đáng kể hệ thống phân cấp thừa kế ... thường phải trả giá về tính linh hoạt mà tôi không cho là đáng giá :)