Noda Time เก็บรหัสไว้ภายในมากขึ้น สิ่งนี้ทำให้มีความยืดหยุ่นน้อยลงเนื่องจากคุณไม่สามารถสร้างระบบปฏิทินของคุณเองได้ แต่ก็หมายความว่า API นั้นง่ายต่อการเรียนรู้และใช้งาน
ความว่างเปล่ามักเป็นข้อผิดพลาดใน Noda Time ไม่มีอีก "ถ้าคุณผ่านเป็นโมฆะสำหรับเขตเวลาเราจะใช้ค่าเริ่มต้นของระบบ" คุณต้องชัดเจน
การพูดค่าเริ่มต้น ... เราไม่ได้ใช้นาฬิการะบบเป็นค่าเริ่มต้น เรามีIClock
อินเทอร์เฟซแยกต่างหากพร้อมการSystemClock
ใช้งาน แต่ไม่มีค่าเริ่มต้นเป็น "เวลาปัจจุบัน"
นอกเหนือจากคลาสตัวสร้างเฉพาะแล้วทุกอย่างยังไม่เปลี่ยนรูป ฉันคิดว่าMutableDateTime
(et al) ใน Joda Time เป็นความผิดพลาด
เราได้แยกระบบปฏิทินและเขตเวลาออกจากกันเนื่องจากเป็นข้อกังวลที่แตกต่างกันมาก ดังนั้นLocalDate
รู้เกี่ยวกับระบบปฏิทินที่ใช้ แต่ไม่ใช่เขตเวลาตัวอย่างเช่น
วิธีการแก้ไขค่าวันที่ / เวลาในท้องถิ่นเป็นค่าวันที่ / เวลาที่กำหนดไว้นั้นใกล้เคียงกับ JSR-310 มากกว่า Joda Time เราไม่เพียงแค่จัดการกับความคลุมเครือ / ข้ามเวลาในบางลักษณะ: เราทำให้ผู้ใช้พูดในสิ่งที่พวกเขาต้องการ
Joda Time มีสถานที่หลายแห่งที่จะพยายามเดาสิ่งที่คุณต้องการจาก API ที่พิมพ์อย่างอ่อน (เช่นใหม่Instant(Object)
) Noda Time หลีกเลี่ยงสิ่งนี้มากที่สุดเท่าที่จะทำได้ - มีความชัดเจนมากขึ้น
Noda Time มีความเข้มงวดในการคำนวณทางคณิตศาสตร์ประเภทใด ตัวอย่างเช่นคุณไม่สามารถเพิ่ม a Period
ลงไปได้ZonedDateTime
เนื่องจากมีสิ่งแปลกประหลาดรอบ ๆ การเปลี่ยนภาพในเวลากลางวันซึ่งอาจทำให้เกิดความยุ่งเหยิง แต่เราขอแนะนำให้ผู้ใช้แปลงให้LocalDateTime
ทำเลขคณิตจำนวนมากที่พวกเขาต้องการในบริบทที่ไม่ใช่ส่วนแล้วแปลงกลับมา
Noda Time ใช้การสืบทอดค่อนข้างน้อย - ลำดับชั้นใน Joda Time มีความลึกและซับซ้อนอย่างมาก ความจริงที่ว่า Noda Time จำนวนมากขึ้นอยู่กับประเภทของค่าบังคับจริง ๆ แล้ว แต่มีบางสถานที่ที่เรายังคงใช้การสืบทอดคลาส แต่ฉันจัดการเพื่อยุบลำดับชั้นการสืบทอดอย่างมีนัยสำคัญ ... บ่อยครั้งที่ค่าใช้จ่าย ความยืดหยุ่นที่ฉันไม่ได้คิดว่าคุ้มค่า :)