अधिकांश (सभी?) नामस्थान वाली भाषाएं ऑब्जेक्ट ओरिएंटेड होती हैं। कई बार एक मानव पठनीय नाम एक प्रकार के लिए उपयुक्त होता है, भले ही कई असंगत कार्यान्वयन हों। (यह वस्तु उन्मुख पुन: उपयोग पर अन्य मुद्दों को लाता है, लेकिन यह सवाल यह नहीं है)। उदाहरण के लिए, जावा में आपके पास एक टाइमर है जो पृष्ठभूमि UI कार्यों के लिए उपयोग किया जाता है, और एक टाइमर जो पृष्ठभूमि अनुप्रयोग के लिए उपयोग किया जाता है (AWT / स्विंग से बंधा हुआ नहीं) कार्य। नामस्थान आपको अलग-अलग उप-एपीआई में रहने वाली इन समान नाम वाली वस्तुओं को रखने की अनुमति देता है।
नाम स्थान के अस्तित्व में आने का कारण यह था कि अन्य डेवलपर्स अपनी वस्तुओं का नाम क्या होगा, इस अनुमान के अनुचित कार्य के साथ क्या करना था। C ++ ने अवधारणा पेश की (या कम से कम पहली भाषा थी जिसे मैं अवधारणा के साथ उजागर किया गया था), और यह सबसे अच्छा उपयोग प्रथाओं पर कोई दिशानिर्देश नहीं होने के बावजूद मददगार था। जावा ने अवधारणा को अनुकूलित किया और कुछ "सर्वोत्तम प्रथाओं" को जोड़ा जिसमें आपकी कंपनी का नाम नाम स्थान में शामिल किया गया। इस तरह आपको केवल अपनी ही कंपनी के बारे में चिंता करनी थी।
प्रीफ़िक्सिंग बहुत गड़बड़ हो सकती है। आप इसे कब लागू करते हैं? आप इसे कब लागू नहीं करते हैं ? क्या संरचनाएं / कक्षाएं / वैश्विक तरीके उपसर्ग प्राप्त करते हैं? तरीकों के बारे में क्या? संरचना में गुणों के बारे में क्या। मैंने इन सभी चीजों को कोड में देखा है, हालांकि धन्यवाद एक बार में नहीं। Namespaces इन सभी सवालों के लिए कुछ पूर्वानुमान प्रदान करता है, और इसे एक व्यक्तिगत "सर्वोत्तम अभ्यास" के बजाय एक भाषा सुविधा बनाता है।
using
एक विशेष नामस्थान हैं और फिर उस नामस्थान में पहचानकर्ताओं की शुरुआत में उपसर्ग नहीं लगाना है।