2008-09-22 3 views
5

मैं एक स्तर के नामस्थान के लिए उपयोग को समझ सकता हूं। लेकिन नामस्थान के 3 स्तर। पागल लग रहा है। क्या इसके लिए कोई व्यावहारिक उपयोग है? या यह सिर्फ एक गलतफहमी है?जब हम C++ में पदानुक्रमित नामस्थानों के लिए कोई व्यावहारिक उपयोग करते हैं?

उत्तर

9

पदानुक्रमित नामस्थानों का उपयोग इस में किया जाता है कि वे प्रगतिशील रूप से अधिक परिष्कृत परिभाषाओं की अनुमति देते हैं। निश्चित रूप से एक एकल प्रदाता एक ही नाम के साथ दो कक्षाएं उत्पन्न कर सकता है। अक्सर पहले स्तर पर कंपनी के नाम पर कब्जा होता है, दूसरा उत्पाद निर्दिष्ट करता है, तीसरा (और संभवतः अधिक) मैं डोमेन प्रदान करता हूं।

नामस्थान पृथक्करण के अन्य उपयोग भी हैं। एक लोकप्रिय स्थिति आधार वर्गों को फैक्ट्री पैटर्न के लिए अपने नामस्थान में रख रही है और उसके बाद प्रदाता द्वारा अपने नामस्थानों में कारखानों का व्युत्पन्न किया गया है। जैसे System.Data, System.Data.SqlClient और System.Data.OleDbClient

+0

ओओ .. मैं भूल गया कि सी # कैसे संरचित किया गया था। फिर यह समझ में आता है। यह बहुत अच्छा है। धन्यवाद। – Flinkman

1

बिग कोडेबेस को इसकी आवश्यकता होगी। एक उदाहरण के लिए बढ़ावा देखें। मुझे नहीं लगता कि कोई भी बूस्ट कोड 'पागल' कहलाएगा।

यदि आप इस तथ्य पर विचार करते हैं कि पदानुक्रम के किसी एक स्तर पर, लोग केवल 10 वस्तुओं के आदेश पर कहीं अधिक समझ सकते हैं, तो दो स्तर केवल आपको अधिकतम 100 देता है। एक पर्याप्त बड़ी परियोजना की आवश्यकता होगी, इसलिए आसानी से 3 स्तरों को गहरा कर सकते हैं।

+0

मुझे बूस्ट पसंद है, लेकिन निश्चित रूप से पागल है (एक अच्छे तरीके से!) लेकिन कल्पना करें कि यह नामस्थानों के बिना कैसा दिखता है! – jwfearn

2

स्पष्ट रूप से यह राय का विषय है। लेकिन यह वास्तव में संगठन के लिए उबाल जाता है।

plugins::v1::function 

जब 2.0 बाहर लुढ़का हुआ है वे वी 2 उप नाम स्थान में रखा जाएगा: उदाहरण के लिए, मैं एक परियोजना है जो प्लग इन API कार्य/वस्तुओं जो कुछ इस तरह दिखाई है कि है की है। मैं केवल उन्मूलन करने की योजना बना रहा हूं लेकिन वी 1 सदस्यों को कभी भी नहीं हटाऊंगा जो भविष्य में पीछे की संगतता का अच्छी तरह से समर्थन करना चाहिए। यह "सेन" उपयोग का सिर्फ एक उदाहरण है। मुझे लगता है कि कुछ लोग अलग होंगे, लेकिन जैसे मैंने कहा, यह राय का विषय है।

1

मैं अपनी कंपनी में XXX आवेदन पर काम करता हूं, और मैं एक जीयूआई उपप्रणाली लिख रहा हूं। तो मैं अपने नामस्थान के रूप में yyy :: xxx :: gui का उपयोग करता हूं।

0

यह आपकी आवश्यकताओं और प्रोग्रामिंग शैली पर निर्भर करता है। लेकिन namespace के लाभों में से एक विभाजन नाम स्थान (इसलिए नाम) की सहायता करना है। एक ही नामस्थान के साथ, क्योंकि आपकी परियोजना आकार और जटिलता में बढ़ जाती है, इसलिए नाम-टकराव की संभावना भी होती है।

यदि आप कोड लिख रहे हैं जिसका साझा या पुन: उपयोग किया जाना है, तो यह और भी महत्वपूर्ण हो जाता है।

1

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

0

मैं आवेदनों के लिए सहमत हूं। अधिकांश लोग जो नामस्थानों के कई स्तरों का उपयोग करते हैं (मेरे अनुभव में) जावा या .NET पृष्ठभूमि से आते हैं जहां शोर काफी कम होता है। मुझे लगता है कि अच्छी कक्षा उपसर्ग नामस्थानों के कई स्तरों का स्थान ले सकता है।

लेकिन मैंने बूस्ट (और अन्य पुस्तकालयों) में एकाधिक नामस्थान स्तरों का अच्छा उपयोग देखा है। सब कुछ बढ़ावा नामस्थान में है, लेकिन पुस्तकालयों को अपने नामस्थान में रहने की अनुमति है (प्रोत्साहित?)। उदाहरण के लिए - boost :: this_thread नेमस्पेस। यह चीजों की तरह अनुमति देता है ...

boost::this_thread::get_id() 
boost::this_thread::interruption_requested() 

"this_thread" मुफ्त कार्यों के संग्रह के लिए सिर्फ एक नामस्थान है। आप एक ही चीज को कक्षा और स्थैतिक कार्यों (यानी एक मुक्त फ़ंक्शन को परिभाषित करने का जावा तरीका) के साथ कर सकते हैं, लेकिन जब भाषा का प्राकृतिक तरीका होता है तो कुछ अप्राकृतिक क्यों होता है?

0

अच्छी तरह से उपयोग करने के लिए नामस्थान पदानुक्रम देखने के लिए नेट नेट क्लास लाइब्रेरी को देखें। यह कुछ स्थानों में चार या पांच स्तर गहरे हो जाता है, लेकिन ज्यादातर यह केवल दो या तीन है, और संगठन चीजों को खोजने के लिए बहुत अच्छा है।

0

कोडबेस को बड़े पैमाने पर पदानुक्रमित नामस्थानों की आवश्यकता जितनी बड़ी होगी। चूंकि आपकी परियोजना बड़ी और बड़ी हो जाती है, आपको लगता है कि सामानों को ढूंढना आसान बनाने के तरीकों से आपको इसे तोड़ने की जरूरत है।

उदाहरण के लिए हम वर्तमान में 2 स्तर पदानुक्रम का उपयोग करते हैं। हालांकि कुछ बड़े हिस्सों में हम अब 3 स्तरों में उन्हें तोड़ने के बारे में बात कर रहे हैं।

संबंधित मुद्दे