เวลา Noda เทียบกับเวลา Joda?


21

ในคู่มือผู้ใช้ Noda Timeหัวข้อเหตุผลระบุ:

API สาธารณะส่วนใหญ่ได้รับการเขียนใหม่ทั้งเพื่อให้ API ซึ่งเป็นสำนวนที่มากขึ้นสำหรับ. NET และเพื่อแก้ไขการตัดสินใจของ Joda Time บางอย่างซึ่งทีม Noda Time มองว่าเป็น "โชคร้าย" (สิ่งเหล่านี้บางส่วนเกิดจากการมีเป้าหมายที่แตกต่างกันบางอย่างที่ฉันโต้เถียงเป็นความผิดพลาดจริง ๆ )

อะไรคือการตัดสินใจที่แตกต่าง / ดีกว่า สิ่งนี้จะไม่นับความแตกต่างเฉพาะสำหรับไวยากรณ์ภาษา แต่จะรวมถึงสิ่งที่ทำเพื่อให้ผู้ใช้มีโอกาสน้อยที่จะทำให้เกิดข้อผิดพลาดในการเขียนโปรแกรม (การใช้งานไลบรารี)

คำตอบ:


32

จุดเริ่มต้นที่ดีที่สุดน่าจะเป็นส่วน"ปรัชญาการออกแบบ"ของคู่มือผู้ใช้ แต่เพื่อกำหนดความแตกต่างเฉพาะระหว่าง Noda Time และ Joda Time:

  • 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 จำนวนมากขึ้นอยู่กับประเภทของค่าบังคับจริง ๆ แล้ว แต่มีบางสถานที่ที่เรายังคงใช้การสืบทอดคลาส แต่ฉันจัดการเพื่อยุบลำดับชั้นการสืบทอดอย่างมีนัยสำคัญ ... บ่อยครั้งที่ค่าใช้จ่าย ความยืดหยุ่นที่ฉันไม่ได้คิดว่าคุ้มค่า :)


ลิงก์เสีย ...
Pacerier
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.