2009-07-11 11 views
6

मैं, जब विकासशील व्यवस्थित रहने का प्रयास करना पसंद समूहीकरण संबंधित * .cs अपने स्वयं के फ़ोल्डर में अपने आप को एक साथ मक्खियों:सी # नेमस्पेस/फ़ोल्डर्स: जब बहुत व्यवस्थित हो रहा है/बहुत सारे नामस्थान बनाना सही नहीं है?

->Project 
--->Enums 
--->Exceptions 
--->Extensions 
--->Providers 
--->Configuguration 
--->Design 
--->etc. 
    Manager.cs 

आप सभी जानते हैं, दृश्य स्टूडियो, डिफ़ॉल्ट रूप से, प्रत्येक फ़ोल्डर के लिए एक नया नाम स्थान बनाता है:

Company.Product.Enums.MyEnumClass.cs 
... 
Company.Product.Exceptions.ExceptionBase.cs 
etc. 

जिसमें पेशेवर हैं ... और विपक्ष।

अच्छी तरफ यह है कि इंटेलिजेंस के साथ, यह पता लगाने के लिए छोटा हो जाता है कि एक असेंबली कैसे डिज़ाइन की गई थी: आप सभी भागों को देखते हैं, और केवल वे हिस्सों को देखते हैं (प्रत्येक वर्ग, एनम, स्थिर विस्तार क्लोज़, व्यापार इकाई, प्रबंधक, प्रदाता, आदि एक नाम स्थान में सभी।

नकारात्मक पक्ष यह है कि ... आप एक असली ढेर उपयोग करने के लिए कोडिंग करने के लिए शामिल की होने में पहुंचते हैं।

using Company.project.Enums; 
using Company.project.Model; 
using Company.project.Extensions; 
... 
etc. 

और इस तरह काम करने में समस्याएं हैं ... जो एक्सटेंशन के साथ सबसे ज्यादा चमकदार हो जाती है ... यह उन मामलों में से एक है जहां यह स्पष्ट हो जाता है कि जिस तरह से मैं इस बारे में जा रहा हूं वह gr नहीं है खाएं (एक्सटेंशन का उपयोग करना शामिल करना भूलना आसान है, और यह नहीं पता कि मैं जो भी चाहता था वह करने के लिए पहले से ही तरीके थे ...)

तो ... एक तरफ, जिस तरह से व्यवस्थित रहने का विकल्प है, मैं वर्षों से कर रहा हूं, और इंटेलिसेंस को इस तरह से होने की इजाजत देता हूं कि एक असेंबली का एक नया उपयोगकर्ता अपनी कार्यक्षमता के साथ तेजी से बढ़ता है, और इसे शामिल करने के लिए बस इसे ढकता है ..., दूसरा तरीका सब कुछ एक में रखना है नेमस्पेस ... और असेंबली के साथ शुरू करने के तरीके पर अच्छा ध्यान दें ... (अधिक लागत/और ईमानदारी से, छोटी परियोजनाओं आदि के लिए कभी नहीं किया जा सकता है)

नेमस्पेस पर आधिकारिक एमएसडीएन दस्तावेज नहीं है सलाह दें कि किस तरह से जाना है: http://msdn.microsoft.com/en-us/library/893ke618(VS.71).aspx

इससे पहले, इससे पहले कि मैं अपने तरीके बदलूं, मुझे बहुत दिलचस्पी है कि दूसरे क्या कर रहे हैं, और क्यों ... आप क्या कर रहे हैं, और क्यों?

+0

ऐसा लगता है कि यह यहाँ के बारे में पूछा गया था: अपडेट किए गए लिंक के लिए धन्यवाद, जो विस्तार है: http://blogs.msdn.com/joen/archive/2004/03/15/90002.aspx –

उत्तर

9

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

इसके अलावा, आपके द्वारा संदर्भित दिशानिर्देश .NET 1.1 के दिनों से हैं! यूआरएल में सुराग V7.1 है। सही संदर्भ Names of Namespaces है, जो Design Guidelines for Developing Class Libraries का हिस्सा है।

+0

हाय जॉन विषय पर, कम से कम एक smidgeon। ऐसा प्रतीत होता है कि सब कुछ एक साथ लम्बा होना चाहिए ... और कभी-कभी एक नामस्थान में बहुत से वर्गों की ओर जाता है। भी एक छोटी सी उदाहरण पर विचार करें, एक dll: * व्यावसायिक संस्थाओं, * इंटरफेस है, कि वे लागू BizEntities ... * बीई गुण के लिए इस्तेमाल किया Enums * जब गुण * बीई के लिए एक्सटेंशन की स्थापना उठाया अपवाद। .. मैंने यहां विभिन्न कार्यक्षमताओं/समूहों के बारे में भी बात नहीं की है। बस एक ठो। और फिर भी आसानी से एक नामस्थान में 80+ वर्गों का नेतृत्व कर सकते हैं। टिप्पणियां? –

+2

नहीं, सब कुछ एक साथ lumped होना चाहिए। इसे कोड के कार्यात्मक क्षेत्र द्वारा व्यवस्थित किया जाना चाहिए - बस यह किस प्रकार के प्रकार से नहीं है। –

+0

हाय जॉन: फिर से धन्यवाद। मुझे समझ में थोड़ी परेशानी हो रही है कि आप कार्यात्मक सीमाओं पर क्या विचार करते हैं। अगर किसी के पास एक असेंबली है जो संदेशों को संभालने के लिए है, और इसके बाद के प्रदाता कारखाने हैं, तो आप इसे कैसे तोड़ेंगे? यह सभी सामान्य संस्थाओं (संदेश, अनुलग्नक, पता, शीर्षलेख) के साथ विलुप्त हो रहा है, सामान्य संदेश अपवादों को उठाता है, सामान्य enums (संदेश प्राथमिकता, महत्व, आदि) का उपयोग करता है, और एक संदेश प्रबंधक + कई प्रदाता (एलएलबीएलजीनबेस्डप्रोवाइडर, इनमेमप्रोवाइडर, आदि) यह सब कुछ है कार्यक्षमता का एक क्षेत्र: संदेश। .. एक साथ लम्बा, या उप-एनएस में तोड़ना? और यदि हां, तो क्या/कहाँ? –

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