2010-07-29 10 views
20

.NET प्रोजेक्ट में आपके पास सहायक कक्षाएं कहां होनी चाहिए इसके लिए कुछ सर्वोत्तम अभ्यास क्या हैं? व्यवसाय परत सामग्री से अलग वर्गों का जिक्र करते हुए, लेकिन प्रस्तुति और ऐप सामग्री जैसे एपसेटिंग कॉन्फ़िगर प्रबंधक और अन्य कोड जो कभी-कभी मॉड्यूल विशिष्ट होते हैं या कभी-कभी पूरे ऐप में उपयोग किए जाते हैं।सी # परियोजना सहायक या उपयोगिता कक्षाएं व्यवस्थित करना

+0

क्या आप कुछ ठोस उदाहरणों के साथ 'सहायक विधि' से क्या मतलब रखते हैं, इसका विस्तार कर सकते हैं? –

+0

@jeff बहुत ज्यादा किसी भी पुन: प्रयोज्य कोड। मैं हमेशा प्रस्तुति परत से एक व्यापार परत परियोजना अलग है जो तार्किक वर्कफ़्लो आइटम की सभी कार्यक्षमता को शामिल करता है। लेकिन कॉन्फ़िगरेशन सेटिंग रैपर और वास्तविक सहायक कक्षाओं जैसी सभी चीजों के लिए जो निर्माण अनुरोधों को पसंद करते हैं, क्वेरी स्टिंग को पचते हैं, या नियंत्रण पर सामान्य कार्य करते हैं, मैं विस्तार करने के लिए बहुत आलसी हूं ... कि सॉर्टा सामान। मैं सिर्फ यह जानना चाहता हूं कि यह सब संभालने का पसंदीदा तरीका क्या है। – spaghetticowboy

उत्तर

16

मैं हमेशा इस तरह की चीजों को बहुत तरल पदार्थ की अनुमति देता हूं। उस ने कहा:

  1. मैं "सहायक" कक्षाओं को किसी भी अन्य वर्ग के समान परीक्षण करता हूं। इससे उन्हें स्थैतिक नहीं होता है।
  2. मैं इन सहायकों को आवश्यकतानुसार व्यक्तिगत तरीकों के रूप में बनाकर शुरू कर सकता हूं। जैसा कि मुझे लगता है कि उन्हें एक से अधिक कक्षाओं में जरूरी है, मैं उन्हें उसी परियोजना में अपनी कक्षा या "उपयोगिता" कक्षा में ले जाऊंगा।
  3. यदि मुझे लगता है कि उन्हें एक से अधिक परियोजनाओं में आवश्यकता है, तो मैं उन्हें "पदानुक्रम" में उच्च स्थानांतरित करता हूं: परियोजना से समाधान तक, समाधान से उपप्रणाली तक, सबसिस्टम से एप्लिकेशन तक, एप्लिकेशन से पुस्तकालय या ढांचे आदि तक।
1

हम में से अधिकांश बस उन्हें "हेल्पर्स" फ़ोल्डर में फेंक देते हैं।

सहायक पर निर्भर करता है, तो आप विधियों को आभासी चिह्नित करना चाहेंगे ताकि यदि आवश्यक हो तो आप इसे नकल कर सकते हैं। यह उस इंटरफ़ेस से जुड़ा हुआ है जो इसे कार्यान्वित करता है, लेकिन यदि आपके पास प्रति इंटरफ़ेस केवल एक ठोस है तो यह अधिक हो सकता है।

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

फिर भी, पुनर्विचार।

+2

@Randolpho, स्थिर सहायक तरीके के रूप में स्थिर होने के आपके कारण क्या हैं?विस्तार विधियों के बारे में क्या? वे आम तौर पर सहायक होते हैं लेकिन स्थिर होने की आवश्यकता होती है ... –

+0

स्टेटिक तरीके पर क्यों रैग? – Nate

+2

@ नेट बॉस: क्योंकि यदि आपकी स्थैतिक सहायक विधि की बाहरी निर्भरता है, तो आप स्थैतिक विधि का उपयोग करते समय उस निर्भरता से कड़े बाध्य हैं। आप इसे नकल नहीं कर सकते हैं, जिससे आपका कोड परीक्षण और बनाए रखने में अधिक कठिन हो जाता है। – Randolpho

1

मैं उन्हें एक यूटिल नेमस्पेस में डालता हूं। या तो मुख्यप्रोजेक्ट नेमस्पेस में यदि वे बहुत सामान्य हैं उदा। MyProject.Utils.MyHelperClass, या यदि वे अधिक विशिष्ट हैं तो उप नामस्थान MyProject.CRM.Utils.MyCRMHelperClass

2

मेरे पास हमेशा मेरे समाधान में एक MyProject.Core क्लास लाइब्रेरी है जहां मैंने ऐसी चीजें रखीं।

संपादित करें: मैंने एक "बड़ा" प्रश्न का उत्तर दिया होगा।

एक ही परियोजना में यह सब परियोजना के आकार पर निर्भर करता है। माइक्रोसॉफ्ट डिज़ाइन दिशानिर्देश इस बात के बारे में बात करते हैं कि यदि आपके पास पांच से कम है तो मुझे नामस्थान नहीं बनाना चाहिए (अगर मुझे इस नंबर के बारे में गलत है तो मुझे सही करें) इसके भीतर टाइप करें।

1

हम एक विधानसभा सभी परियोजनाओं जो यह मामलों के अलावा जरूरत है जब सहायक कुछ व्यापार वस्तुओं या कोर वस्तुओं का प्रयोग करना होगा द्वारा संदर्भित करने के लिए लक्षित उदाहरण के लिए Common कहा जाता है में इस तरह के वर्गों डाल दिया।

1

मैं रैंडोल्फो और बेन के संयोजन का एक संयोजन करता हूं: मैं उपयोगिता नामस्थान में "उपयोगिता" फ़ोल्डर में स्थिर सहायक कक्षाओं का उपयोग करता हूं। बेहतर फ़ाइल संगठन, शेष एप्लिकेशन नेमस्पेस को स्पष्ट रखता है।

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