IOS / OSX ओपन-सोर्स प्रोजेक्ट्स के लिए नामकरण सम्मेलन


12

हमेशा नहीं, लेकिन ज्यादातर समय, आपको पहले या अंतिम नामों के शुरुआती अक्षरों के साथ शुरू होने वाले नामों के साथ आईओएस या मैक ओएस एक्स ओपन-सोर्स प्रोजेक्ट मिलेंगे। यदि कोई परियोजना निक लेब्लांक द्वारा अधिकृत की जानी थी, तो परियोजना को इस रूप में पढ़ा जाएगा NLMyProject

उदाहरण:

वह कहां से आता है? क्या एक व्यक्ति ने इसे पहले इस तरह से लिखा था और फिर बाकी सभी ने इसका अनुसरण किया?

मैं इसके बारे में कुछ भी नहीं पा सका, यहां तक ​​कि Apple दिशानिर्देशों में भी । क्या वह मुहावरा कहीं लिखा हुआ है?


1
अच्छा सवाल है, और शांत खुला स्रोत उदाहरण! ;-)
लियो नटन

जवाबों:


16

उद्देश्य C, C की तरह, कोई नामस्थान नहीं है। इसका मतलब यह है कि अगर किसी ने पहले से ही किसी फ़ंक्शन fooया वर्ग को परिभाषित किया है Bar, तो यह विश्व स्तर पर अद्वितीय होना चाहिए और आप इसे परिभाषित नहीं कर सकते। यह तब हो सकता है जब आपके पास अपना कोड होने के बाद बहुत अधिक सिरदर्द हो और फिर एक और पुस्तकालय जोड़ें और अचानक चीजें अजीब जगहों पर टूटें।

वहाँ है इस के लिए एप्पल द्वारा प्रस्तुत एक दिशानिर्देश कन्वेंशनों: उद्देश्य सी के साथ प्रोग्रामिंग iOS डेवलपर पुस्तकालय की धारा:

कुछ नाम आपके ऐप के अनूठे होने चाहिए

हर बार जब आप एक नया प्रकार, प्रतीक या पहचानकर्ता बनाते हैं, तो आपको पहले उस दायरे पर विचार करना चाहिए जिसमें नाम अद्वितीय होना चाहिए। कभी-कभी यह गुंजाइश पूरी तरह से हो सकती है, जिसमें इसके जुड़े ढांचे भी शामिल हैं; कभी-कभी दायरा सिर्फ एक संलग्न वर्ग या यहां तक ​​कि कोड के एक ब्लॉक तक ही सीमित होता है।

क्लास के नाम एक पूरे ऐप के लिए अद्वितीय होने चाहिए

उद्देश्य-सी कक्षाओं को विशिष्ट रूप से न केवल उस कोड के भीतर नामित किया जाना चाहिए जिसे आप किसी परियोजना में लिख रहे हैं, बल्कि आपके द्वारा शामिल किए जा सकने वाले किसी भी ढाँचे या बंडलों में भी। एक उदाहरण के रूप में, आपको ViewController या TextParser जैसे सामान्य वर्ग के नामों का उपयोग करने से बचना चाहिए क्योंकि यह संभव है कि आपके ऐप में शामिल एक फ्रेमवर्क सम्मेलनों का पालन करने और समान नामों के साथ कक्षाएं बनाने में विफल हो सकता है।

वर्ग नामों को अद्वितीय रखने के लिए, सम्मेलन सभी वर्गों पर उपसर्गों का उपयोग करना है। आपने देखा होगा कि कोको और कोको टच क्लास नाम आमतौर पर एनएस या यूआई के साथ शुरू होते हैं। इस तरह के दो-अक्षर उपसर्ग ऐप्पल द्वारा फ्रेमवर्क कक्षाओं में उपयोग के लिए आरक्षित हैं। जैसा कि आप कोको और कोको टच के बारे में अधिक जानते हैं, आप कई अन्य उपसर्गों का सामना करेंगे जो विशिष्ट रूपरेखाओं से संबंधित हैं:

...

आपकी अपनी कक्षाओं को तीन अक्षर उपसर्गों का उपयोग करना चाहिए। ये आपकी कंपनी के नाम और आपके ऐप के नाम या आपके ऐप के भीतर एक विशिष्ट घटक के संयोजन से संबंधित हो सकते हैं। एक उदाहरण के रूप में, यदि आपकी कंपनी को व्हिस्परिंग ओक कहा जाता था, और आप ज़ेबरा आश्चर्य नामक एक गेम विकसित कर रहे थे, तो आप अपने वर्ग उपसर्ग के रूप में WZS या WOZ चुन सकते हैं।

इसलिए, वे पुस्तकालयों कि आप इस सम्मेलन को तोड़ने का उल्लेख करते हैं, लेकिन उद्देश्य सी के नाम स्थान की कमी की समस्या के दिल में मिलता है।


NSHipster द्वारा आगे पढ़ना नामकरण
एक उद्देश्य-सी नाम स्थान टकराव को हल करने का सबसे अच्छा तरीका क्या है?
IOS उद्देश्य-सी कोड में नामस्थान का उपयोग कैसे करता है?


ऑब्जेक्टिव-सी की तरह लगता है वास्तव में नामस्थान की जरूरत है ...
क्रिस क्रेफ़िस

1
@ChrisCirefice यह वास्तव में अच्छा होगा, लेकिन यह महसूस करने वाली बात यह है कि सी के शीर्ष पर ऑब्जेक्टिव सी एक पतली परत है। नाम स्थान को शुरू करने की कोशिश करना संभवतया कठिन चीजें हैं जो चीजों को तोड़ने के बिना दिखता है। में खुदाई नहीं ऑब्जेक्टिव-सी नामस्थान है क्यों करता है? मुझे क्लैंग डेवलपर्स मिला - ऑब्जेक्टिव-सी में नामस्थान जोड़ना । याद रखें, @इसका उपयोग इसलिए किया जाता है क्योंकि इसका उपयोग C में नहीं किया जाता है ... किसी अन्य ऑपरेटर को जोड़ने की कोशिश कर रहा है जो अन्य चीजों को नहीं तोड़ता है वह चुनौतीपूर्ण है।

1
@ChrisCirefice नामस्थान कुछ भी हल नहीं करते हैं। उपसर्ग झड़प सिर्फ नेमस्पेस क्लैश बन जाते हैं।
माइल्स रूट

@MichaelT ऑब्जेक्टिव C कुछ समय के लिए C के ऊपर एक पतली परत नहीं रही (Objective C 2.0)। अब Apple ने फोकस को स्विफ्ट में स्थानांतरित कर दिया है, जिसमें अधिक आधुनिक विशेषताएं शामिल हैं, जैसे नाम स्थान, लेकिन वर्तमान में उद्देश्य सी की अन्य विशेषताओं का अभाव है
लियो नातान
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.