एक नाम स्थान में कक्षाओं की संख्या - कोड गंध?


11

मेरे पास एक C # लाइब्रेरी है जिसका उपयोग कई निष्पादकों द्वारा किया जाता है। लाइब्रेरी में केवल कुछ नामस्थान हैं, और मैंने अभी देखा कि किसी एक नामस्थान में कुछ कक्षाएं हैं। मैंने हमेशा वर्गीकरण के कारण एक ही नामस्थान में बहुत अधिक कक्षाएं लेने से परहेज किया है, और क्योंकि अवचेतन रूप से, मुझे लगता है कि यह नामस्थान की गहरी पदानुक्रम रखने के लिए "प्रेटियर" लगता है।

मेरा सवाल यह है: क्या किसी और ने इसे "कोड गंध" माना है जब किसी नेमस्पेस में कई कक्षाएं होती हैं - भले ही कक्षाएं एक-दूसरे से संबंधित हों? क्या आप उन कक्षाओं में बारीकियों को खोजने के लिए बहुत प्रयास करेंगे जो उपश्रेणीकरण की अनुमति देता है?


8
यदि कक्षाएं उक्त नाम स्थान सं। डिजाइन अपने स्वभाव से व्यक्तिपरक है, इसलिए यह वास्तव में कहना कठिन है और अधिक प्राथमिकता का मामला है जैसा कि आपने पहले ही पहचान लिया है।
क्रिस

व्हाट्सएप स्टाइलकॉप कहता है कि यह कानून है। मुझे यकीन है कि यह इसे पसंद नहीं करेगा।
नौकरी

2
"काफी कुछ" परिभाषित करें। 10? 100? 1000?
एरिक किंग

जवाबों:


7

जरुरी नहीं। यदि सभी वर्ग वास्तव में नेमस्पेस द्वारा परिभाषित श्रेणी के हैं, तो यह ठीक है।

आप जो कुछ भी कर सकते हैं वह कक्षाओं को देखने और उनमें से कुछ को विलय करने की संभावना पर प्रतिबिंबित करना है। अच्छी तरह से उन वर्गों के छोटे समूह "परिवार" की कार्यक्षमता का समर्थन कर सकते हैं लेकिन कुछ ऐतिहासिक कारणों के लिए अलग से लागू किए गए थे। अब जब पर्याप्त समय बीत चुका है, तो एक बेहतर रचना संभव हो सकती है।


6

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

आगे का सबसे सरल तरीका सभी प्राथमिक वर्गों को एक एकल नामस्थान में रखना है, किसी भी उन्नत परिदृश्य वर्ग को उप-नामस्थानों में टक करना; .NET फ्रेमवर्क यह सब समय होता है, को देखने System.Collectionsऔर System.Collections.Specializedइस अभ्यास का अच्छा उदाहरण के लिए।

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


3

जब तक वे एक साथ होते हैं और एक दूसरे से संबंधित होते हैं तब तक किसी नाम स्थान में बहुत अधिक कक्षाएं होने की समस्या नहीं होती है।

किसी वर्ग का अपना अलग नाम है या नहीं यह व्यक्तिगत प्राथमिकता का मामला है।

क्या अधिक प्राकृतिक दिखते हैं?

Parsers.XML.XmlParser.cs
Parsers.XmlParser.cs

यह पूरी तरह से इस बात पर निर्भर करता है कि आप अपने कोड को कैसे देखना और इनवॉइस करना पसंद करते हैं।

व्यक्तिगत रूप से, मैं केवल अलग नामस्थान पसंद करता हूं, जब मैं जानता हूं कि इससे संबंधित एकल वर्ग से अधिक होगा।


0

यह ठीक है। नाम स्थान होने का प्राथमिक कारण नाम टकराव से बचना है और इसके बाद ही हमें तार्किक दायरे के बारे में सोचना चाहिए, जो नियम के बजाय व्यक्तिगत पसंद का मामला है। बेशक कुछ समझदार नियमों का स्वागत है। कोई भी एक नाम स्थान में 3k ~ 4k कक्षाओं के माध्यम से स्क्रॉल करना चाहता है।

एक अच्छा उदाहरण सी ++ मानक लाइब्रेरी में std नाम स्थान है जो आपको मानक से अपने एल्गोरिदम को अलग करने की अनुमति देता है।


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