यदि आप प्रोजेक्ट पर काम करने वाले अकेले हैं तो मैं करता हूं जो आपको पहले पर समझ में आता है। आप पर एक निर्देशिका या परियोजना संरचना लगाए जाने से कुछ भी बुरा नहीं है जो आपको अनजान लगता है। \ Core \ फ़ोल्डर या \ नियंत्रक \ फ़ोल्डर में बेसकंट्रोलर क्लास है? व्यक्तिगत रूप से मैं नियंत्रक में देखता हूं लेकिन कुछ लोग कसम खाता है कि यह \ Core \ या \ Bases में होना चाहिए।
पहले नौसिखिया जाल सोच रही है कि आप गलत तरीके से अपने कोड को व्यवस्थित कर सकते हैं और किसी भी तरह से इस परियोजना की सफलता पर दर्शाता है। मैंने परियोजनाएं देखी हैं जहां 30 फाइलें एक फ़ोल्डर और अन्य परियोजनाओं में थीं जहां 30 फाइलों के लिए 20 फ़ोल्डर्स थे।
दूसरा नौसिखिया जाल भूल रहा है कि अन्य भाषाओं की तुलना में आपको शानदार इंटेलिजेंस, कोड नेविगेशन टूल और विजुअल स्टूडियो से रिफैक्टरिंग समर्थन का लाभ है। आपके पास एक कंपाइलर भी है जो फ़ाइल को बहुत कम दर्दनाक बनाता है। यदि आप "गलत" स्थान में कुछ डालते हैं, तो ठीक है, आप इसे हमेशा ढूंढ सकते हैं और उसे जहां कहीं भी होना चाहिए वहां खींच सकते हैं।
मैं ईमानदार रहूंगा कि मैं अभी एक परियोजना पर काम कर रहा हूं और मुझे यह भी यकीन नहीं है कि कुछ कक्षाएं मेरी फ़ाइल संरचना में कहां रहती हैं। परिभाषा/घोषणा पर जाएं कीबोर्ड शॉर्टकट्स मैं बहुत उपयोग करता हूं। क्योंकि यह केवल कोड के साथ काम कर रहा है यह ठीक है। अगर मुझे परियोजना पर एक और डेवलपर जोड़ना पड़ा तो मैं शायद चीजों को साफ कर दूंगा।
व्यक्तिगत रूप से मैं एक ही फ़ोल्डर के अंदर अपने कार्यान्वयन प्रकारों के साथ इंटरफेस डालता हूं। IPaymentGateway AuthorizeNetGateway और PaypalGateway के समान फ़ोल्डर में है। अगर मैं अपने समाधान एक्सप्लोरर साइडबार में एक ही समय में उस फ़ोल्डर में सभी फ़ाइलों को नहीं देख पा रहा हूं तो मैं सभी गेटवे फ़ाइलों को \ Gateway \ फ़ोल्डर में ले जाता हूं।
निर्भरता इंजेक्शन मिश्रण में जोड़ा गया है, मैं सलाह देता हूं कि आप केवल नामस्थान विस्फोट से चिंतित हों। सबसे बुरी चीज जो आप कर सकते हैं वह आपके बूटस्ट्रैपर्स और फ़ाइलों को लंबे समय से घोषणाओं और उपनामों का उपयोग करके अव्यवस्थित कर देती है।
ForRequestedType<Customer>
क्लीनर की तुलना में
using KevDog.Models
using Customer=KevDog.Models.Customer
या
ForRequestedType<KevDog.Models.Customer>
एक और तरीका है इस समस्या से बचने के लिए स्पष्ट हो रहा है जब आपके नामकरण बातें: ग्राहक, CustomerViewModel, CustomerController, CustomerDataRow, CustomerView
टीडीडी के लिए आपको प्रबंधन के लिए लगभग दो बूटस्ट्रैपर्स रखना होगा आपके ठोस प्रकार। आप वास्तव में नहीं चाहते हैं कि आपके यूनिट परीक्षण AuthorizeNetGateway का उपयोग करें: IPaymentGateway, बल्कि StubGateway: IPaymentGateway।
अब मैं डीआई में भी नया हूं इसलिए मैं चीजों को बहुत सरल बना देता हूं और 101 स्तर के ट्यूटोरियल और दस्तावेज़ीकरण को दर्पण करता हूं। निर्माण कॉन्फ़िगरेशन के आधार पर गतिशील इंजेक्शन में होना केवल तभी उपयोग किया जाना चाहिए जब किसी विशिष्ट स्थिति की आवश्यकता होती है और आप जानते हैं कि आपका काम क्यों ठीक है।
मैं आमतौर पर एमवीसी ऐप्स के लिए डिफ़ॉल्ट संरचना भी रखता हूं। 99% सभी ट्यूटोरियल और वीडियो के समान संरचना में अपना कोड रखना आसान है।
उम्मीद है कि इससे मदद मिलती है।
स्ट्रक्चर मैप के साथ मेरा नौसिखिया जाल मध्यम ट्रस्ट के तहत सुरक्षा अनुमति अपवाद था। यदि आपका ऐप मध्यम ट्रस्ट वातावरण में चलाएगा तो आप वैकल्पिक डी कंटेनर को देखना चाहेंगे। –