2010-02-09 17 views
5

में नेमस्पेस सर्वोत्तम अभ्यास मैं एक एप्लिकेशन के उपयोग के लिए एक पुस्तकालय बना रहा हूं जिसका निर्माण मैं कर रहा हूं। मैं नीचे जैसा नाम स्थान संरचना बना रहा हूं।अलग-अलग परियोजनाओं या एकाधिक वर्ग फ़ाइलों ... सी #

MyNamespace.Validation 
MyNamespace.Reports 
MyNamespace.Transactions 
MyNamespace.DataImport 
etc... 

यह एक कई परियोजनाओं के साथ प्रत्येक उप नाम स्थान के लिए एकाधिक वर्ग फाइलों के साथ या प्रत्येक उप नाम स्थान के लिए समाधान एक प्रोजेक्ट बनाने के लिए सबसे अच्छा अभ्यास होगा? धन्यवाद।

+0

जो भी आप चुनते हैं: आपको प्रति वर्ग एक फ़ाइल हमेशा (बहुत अधिक) होना चाहिए। – Svish

उत्तर

9

दोनों दृष्टिकोणों के लिए पेशेवर और विपक्ष हैं, जिन्हें आपको व्यक्तिगत रूप से अपने परिस्थिति के लिए तय करने की आवश्यकता है।

प्रो कई परियोजनाओं के लिए:

  • अलग विधानसभाओं संभवतः के माध्यम से धीरे-धीरे से युग्मन रोकने, संकलक अधिक सख्त मार्गदर्शन प्रदान करने के लिए अनुमति देते हैं। यह आपको निर्भरताओं को बेहतर बनाए रखने की अनुमति देता है।
  • पृथक असेंबली अन्य परियोजनाओं में आवश्यकतानुसार लोड की जा सकती है, संभावित रूप से पुन: उपयोग को आसान बनाना।
  • पृथक असेंबली अनावश्यक कोड को किसी प्रक्रिया में लोड होने से रोक सकती हैं, क्योंकि वे मांग पर लोड हो जाते हैं।

कई परियोजनाओं के लिए नकारात्मक:

  • अधिक से अधिक फ़ाइलों के रूप में जटिल तैनाती, तैनाती की जरूरत है (मामूली)
  • धीमी निर्माण/संकलन, और यहाँ तक कि संभवतः कई विधानसभाओं लोड हो रहा है (मामूली) से बार लोड

व्यक्तिगत रूप से, मुझे लगता है कि अधिकांश मामलों में पेशेवरों ने विपक्ष से कहीं अधिक है। मैं आम तौर पर अलग-अलग असेंबली में अपने नामस्थानों को विभाजित कर दूंगा, बशर्ते वे संबंधित न हों। आपके मामले में, आप 4 बहुत अलग अवधारणाओं पर काम कर रहे हैं, इसलिए मेरी आंत महसूस करना है कि विभाजन सबसे अधिक समझ में आता है।

+0

+1 - हालांकि मैं दूसरी तरफ झुकता हूं, कि पहला 'प्रो' एक बड़ा सौदा है। आप इतने सारे वर्गों को गठबंधन नहीं करना चाहते हैं कि आप 'आंतरिक' दृश्यता संशोधक के महत्व को नष्ट कर दें! –

+0

हां। वह पहला प्रो (और तीसरा) मुख्य कारण है जो मैं आम तौर पर करता हूं। –

2

मैं कई परियोजनाओं के साथ एक समाधान के लिए जाऊंगा।

लाभ:
- फाइलों के बीच आसान नेविगेट

1

मैं आमतौर पर पालन किया है एक विधानसभा के साथ पैटर्न एक नाम स्थान है और DLL नाम है के लिए एक समाधान में सभी परियोजनाओं - प्रत्येक परियोजना एक अलग dll
हो सकता है नामस्थान में। आसान क्या DLLs संदर्भ के लिए

3

मैं कहूंगा कि यह निर्भर करता है खोजने के लिए।

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

    ,:

  • ऊपर, विजुअल स्टूडियो स्वचालित रूप से सही नाम स्थान

मैं यहाँ असली सवाल लगता है के भीतर नए वर्ग फ़ाइलों पैदा करेगा ऐसा यद्यपि है एक परियोजना में सब कुछ डालने से समझ में आ जाएगा। हालांकि, अगर यह कोड पुन: प्रयोज्य होने जा रहा है, तो आपको यह सोचना चाहिए कि क्या आप इस लाइब्रेरी का केवल एक हिस्सा (या एक उप-नामस्थान) का पुन: उपयोग करेंगे। अगर उत्तर हाँ है, तो मैं नामस्थानों को अलग-अलग परियोजनाओं में अलग कर दूंगा, इसलिए भविष्य में, आप केवल अपनी आवश्यक परियोजनाओं को शामिल कर सकते हैं।

3

अपने समाधान को तोड़ने का तरीका तय करना व्यक्तिपरक है - और यह वास्तव में आपके कोड के विनिर्देशों पर निर्भर करता है।

हालांकि, एक बात निश्चित है: कई असेंबली बनाए रखने में कमी आई है! This article उन दोषों का वर्णन करने में विशेष रूप से अच्छा है, यह देखते हुए कि वे विकास के समय, संकलन समय, तैनाती का समय, और रनटाइम पर लागत कैसे जोड़ते हैं।

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

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