Noda Time बनाम Joda Time?


21

में Noda समय उपयोगकर्ता मार्गदर्शिका , तर्क खंड में कहा गया है:

सार्वजनिक एपीआई को बड़े पैमाने पर फिर से लिखा गया है, दोनों एक एपीआई प्रदान करते हैं जो .NET के लिए अधिक मुहावरेदार है, और कुछ जोडा टाइम निर्णयों को सुधारने के लिए भी है जो कि नोडा टाइम टीम "दुर्भाग्यपूर्ण" के रूप में देखते हैं। (इनमें से कुछ अलग-अलग लक्ष्यों के होने के कारण हैं; दूसरे मैं तर्क दूंगा कि वास्तव में गलतियाँ हैं।

ये कौन से निर्णय हैं जो अलग / बेहतर हैं? यह केवल भाषा सिंटैक्स के लिए मतभेदों की गणना नहीं करेगा, लेकिन उपयोगकर्ताओं को एक प्रोग्रामिंग त्रुटि (लाइब्रेरी प्रयोज्य) बनाने की संभावना कम करने के लिए कुछ भी किया जाएगा।

जवाबों:


32

शुरू करने के लिए सबसे अच्छी जगह संभवतः उपयोगकर्ता गाइड का "डिज़ाइन दर्शन" खंड है। लेकिन नोदा टाइम और जोडा टाइम के बीच विशिष्ट अंतर को पूरा करने के लिए :

  • Noda Time अपने कोड को अधिक आंतरिक रखता है। यह इसे कम लचीला बनाता है, जिसमें आप वास्तव में अपना स्वयं का कैलेंडर सिस्टम नहीं बना सकते हैं - लेकिन इसका मतलब यह भी है कि एपीआई सीखने और उपयोग करने के लिए सरल है।

  • Noda Time में Nullity लगभग हमेशा एक त्रुटि है। अब और नहीं "यदि आप एक समय क्षेत्र के लिए शून्य में गुजरते हैं, तो हम सिस्टम डिफ़ॉल्ट का उपयोग करेंगे।" आपको स्पष्ट होना चाहिए।

  • चूक की बात ... हम एक डिफ़ॉल्ट के रूप में सिस्टम घड़ी का उपयोग नहीं करते हैं। हमें IClockएक SystemClockकार्यान्वयन के साथ एक अलग इंटरफ़ेस मिला है , लेकिन "वर्तमान समय" के लिए कुछ भी नहीं है।

  • विशिष्ट बिल्डर वर्गों के अलावा, सब कुछ अपरिवर्तनीय है। मुझे लगता है कि MutableDateTime(एट अल) जोडा टाइम में एक गलती थी।

  • हमने कैलेंडर सिस्टम और समय क्षेत्र को एक दूसरे से अलग कर दिया है, क्योंकि वे वास्तव में बहुत अलग चिंताएं हैं। इसलिए LocalDate, कैलेंडर प्रणाली के बारे में जानता है जो इसका उपयोग करता है, लेकिन समय क्षेत्र नहीं, उदाहरण के लिए।

  • स्थानीय दिनांक / समय मानों को ज़ोन की तिथि / समय मानों को हल करने का तरीका, Joda Time की तुलना में JSR-310 के करीब है। हम कुछ खास तरीके से अस्पष्टता / समय को रोक नहीं पाते हैं: हम उपयोगकर्ता को यह कहते हैं कि वे क्या चाहते हैं।

  • Joda Time में विभिन्न स्थान हैं जहां यह अनुमान लगाने की कोशिश करता है कि आप कमजोर टाइप के एपीआई (जैसे नए Instant(Object)) से क्या चाहते हैं । Noda Time इससे बचता है जहाँ तक यह संभव है - यह बहुत अधिक स्पष्ट है।

  • Noda Time इस बात पर सख्त है कि आप किस प्रकार के अंकगणित में किस प्रकार का प्रदर्शन कर सकते हैं। उदाहरण के लिए, आप नहीं एक जोड़ सकते हैं Periodएक करने के लिए ZonedDateTimeहै, क्योंकि वहाँ के आसपास दिन के उजाले संक्रमण बचत जो कर सकता था ऊपर गड़बड़ बातें विषमताएं हैं। इसके बजाय, हम उपयोगकर्ताओं को कन्वर्ट करने के लिए प्रोत्साहित करते हैं, LocalDateTimeहालांकि वे गैर-ज़ोन्डे संदर्भ में कितना अंकगणित चाहते हैं, और फिर वापस कन्वर्ट करते हैं।

  • Noda Time विरासत का उपयोग करता है बल्कि कम - Joda Time में पदानुक्रम बेहद गहरे और जटिल होते हैं। तथ्य यह है कि बहुत से नोदा समय मूल्य प्रकारों पर आधारित होता है, वास्तव में यह वैसे भी लागू होता है, लेकिन कुछ स्थान ऐसे हैं जहां हम अभी भी वर्ग विरासत का उपयोग कर रहे हैं, लेकिन मैं विरासत के पदानुक्रम को महत्वपूर्ण रूप से ध्वस्त करने में कामयाब रहा हूं ... अक्सर खर्च पर लचीलेपन का जो मुझे सार्थक नहीं लगा :)


कड़ी टूटी ...
पचेरियर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.