मेरी टीम ने पाया कि हम अपने कोड बेस के दौरान विभिन्न प्रकार के NSDateFormatter
ऑब्जेक्ट्स का उपयोग कर रहे थे, और यह देखना शुरू कर दिया कि हम अलग-अलग स्थानों के समूह में सामान्य स्वरूपण आवंटित/आरंभ करने की लागत/भ्रम से कैसे बच सकते हैं।साझा NSDateFormatter - सर्वोत्तम व्यवहार?
एक विचार था कि हम NSDateFormatter
कक्षा पर एक श्रेणी बनाना चाहते थे जो एक सामान्य रूप से कॉन्फ़िगर किए गए फ़ॉर्मेटर के स्थिर उदाहरण का संदर्भ प्रदान करेगा। उदाहरण के लिए, हम कई स्थानों में "कम समय" तिथि फ़ॉर्मेटर उपयोग कर रहे थे, और निम्न वर्ग विधि जोड़ने के लिए देख रहे थे:
@implementation NSDateFormatter (NSDateFormatter_PDDateFormatters)
static NSDateFormatter * shortTimeFormatter = nil;
+ (NSDateFormatter *) PDSharedShortTimeFormatter {
@synchronized([NSDateFormatter class]){
if(shortTimeFormatter == nil){
// Create new formatter for SHORT times (e.g. 12:00 pm)
shortTimeFormatter = [[NSDateFormatter alloc] init];
[shortTimeFormatter setDateStyle: NSDateFormatterNoStyle];
[shortTimeFormatter setTimeStyle:NSDateFormatterShortStyle];
}
return shortTimeFormatter;
}
return nil;
}
@end
मुद्दों मैं इस दृष्टिकोण के साथ है में से एक है कि हम वर्तमान में नहीं हैं कि " "NSDateFormatter
को बदलने से" की रक्षा। चूंकि फ़ॉर्मेटर हमारे आवेदन के दौरान अनिवार्य रूप से "साझा" है, इसलिए संभावित रूप से समस्याएं पैदा हो सकती हैं यदि कोई अन्य वस्तु फॉर्मेटर की कॉन्फ़िगरेशन (जैसे समय/दिनांक शैली) को बदलना था।
क्योंकि हम इसे आंतरिक रूप से उपयोग कर रहे हैं, इसलिए मैं इस कार्यक्षमता का दुरुपयोग करने वाली हमारी टीम के जोखिम से अधिक चिंतित नहीं हूं (यानी यह एक छोटी सी टीम है, और स्पष्ट रूप से टिप्पणी की गई है)।
हालांकि, मैं यहां सर्वोत्तम प्रथाओं के बारे में सोच रहा था।
क्या डेट फॉर्मेटर के अपरिवर्तनीय संदर्भ को वापस करने का कोई तरीका है? अगर मैं एक फॉर्मेटर की एक प्रति वापस लौटाता हूं, तो क्या हम अब आवंटित आवंटन/इनिट करने से कम महंगे हैं?
क्या यहां कुछ और दृष्टिकोण है?
हम इसके साथ चलेंगे और चलेंगे, लेकिन "बेहतर" कोड लिखने में कुछ प्रतिक्रिया प्राप्त करना हमेशा अच्छा होता है।
इस विशेष मामले में, मैंने 'एनएसडीएटी' कक्षा में "सार्वजनिक" एपीआई जोड़ने के बारे में भी सोचा है: '[तारीख पीडीशॉर्टटाइम]'। फिर, कैश किए गए 'NSDateFormatter' ऑब्जेक्ट को केवल दृश्यों के पीछे पहुंचाया जाता है। जवाब के लिए धन्यवाद! – thauburger
यह एनएसएसटींग यानी [एनएसएसटींग शॉर्टटाइम फ्रॉमडेट:] – ADAM
"बस इसके बारे में चिंता न करें" पर एक श्रेणी के रूप में भी अच्छा होगा, यह जाने का तरीका नहीं है: वस्तुओं को गलती से संशोधित करना अविश्वसनीय रूप से आसान है। निश्चित रूप से कामकाज करना, जो एक अच्छा समाधान है। –