यह बता दें कि मैं निर्भरता इंजेक्शन (DI) और स्वचालित परीक्षण का एक बड़ा प्रशंसक हूं । मैं इसके बारे में पूरे दिन बात कर सकता था।
पृष्ठभूमि
हाल ही में, हमारी टीम को सिर्फ यह बड़ा प्रोजेक्ट मिला है जिसे स्क्रैच से बनाया जाना है। यह जटिल व्यावसायिक आवश्यकताओं के साथ एक रणनीतिक अनुप्रयोग है। बेशक, मैं चाहता था कि यह अच्छा और साफ हो, जो मेरे लिए मायने रखता था: बनाए रखने योग्य और परीक्षण करने योग्य। इसलिए मैं DI का उपयोग करना चाहता था।
प्रतिरोध
समस्या हमारी टीम में थी, DI वर्जित है। इसे कुछ बार लाया गया है, लेकिन देवताओं को यह मंजूर नहीं है। लेकिन इसने मुझे हतोत्साहित नहीं किया।
मेरी चाल
यह अजीब लग सकता है लेकिन तीसरे पक्ष के पुस्तकालयों को आमतौर पर हमारी वास्तुकार टीम द्वारा अनुमोदित नहीं किया जाता है (सोचें: "आप एकता , निनजेक्ट , NHibernate , Moq या NUnit की बात नहीं करेंगे , ऐसा न हो कि मैं आपकी उंगली काट दूं")। इसलिए एक स्थापित DI कंटेनर का उपयोग करने के बजाय, मैंने एक अत्यंत साधारण कंटेनर लिखा। इसने मूल रूप से स्टार्टअप पर अपनी सभी निर्भरताएं खत्म कर दीं, किसी भी निर्भरता (निर्माता / संपत्ति) को इंजेक्ट कर दिया और वेब अनुरोध के अंत में किसी भी डिस्पोजेबल वस्तुओं का निपटान किया। यह बेहद हल्का था और हमें वही करना चाहिए जिसकी हमें जरूरत थी। और फिर मैंने उन्हें इसकी समीक्षा करने के लिए कहा।
प्रतिक्रिया
खैर, इसे छोटा करने के लिए। मुझे भारी प्रतिरोध के साथ मुलाकात की गई थी। मुख्य तर्क था, "हमें जटिलता की इस परत को पहले से ही जटिल परियोजना में जोड़ने की आवश्यकता नहीं है"। इसके अलावा, "यह ऐसा नहीं है कि हम घटकों के विभिन्न कार्यान्वयनों में प्लगिंग करेंगे"। और "हम इसे सरल रखना चाहते हैं, यदि संभव हो तो बस एक विधानसभा में सब कुछ सामान करें। डीआई एक गैर-जटिल जटिलता है जिसका कोई लाभ नहीं है"।
अंत में, मेरा प्रश्न
आप मेरी स्थिति को कैसे संभालेंगे? मैं अपने विचारों को प्रस्तुत करने में अच्छा नहीं हूं, और मैं जानना चाहूंगा कि लोग अपने तर्क कैसे प्रस्तुत करेंगे।
बेशक, मैं मान रहा हूं कि मेरी तरह, आप डीआई का उपयोग करना पसंद करते हैं। यदि आप सहमत नहीं हैं, तो कृपया कहें कि क्यों मैं सिक्के के दूसरे पक्ष को देख सकता हूं। किसी ऐसे व्यक्ति के दृष्टिकोण को देखने के लिए वास्तव में दिलचस्प होगा जो असहमत है।
अपडेट करें
आप सभी के जवाब के लिए धन्यवाद। यह वास्तव में चीजों को परिप्रेक्ष्य में रखता है। आपको प्रतिक्रिया देने के लिए आँखों का एक और सेट होना अच्छा है, पंद्रह वास्तव में बहुत बढ़िया है! यह वास्तव में शानदार उत्तर हैं और मुझे विभिन्न पक्षों से इस मुद्दे को देखने में मदद मिली है, लेकिन मैं केवल एक उत्तर चुन सकता हूं, इसलिए मैं केवल शीर्ष मतदाता चुनूंगा। उत्तर देने के लिए समय निकालने के लिए सभी का धन्यवाद।
मैंने फैसला किया है कि DI को लागू करने का शायद यह सबसे अच्छा समय नहीं है, और हम इसके लिए तैयार नहीं हैं। इसके बजाय, मैं डिजाइन को परीक्षण योग्य बनाने और स्वचालित इकाई परीक्षण प्रस्तुत करने के प्रयास पर अपना ध्यान केंद्रित करूंगा। मुझे पता है कि लेखन परीक्षण अतिरिक्त ओवरहेड है और अगर कभी यह तय हो जाता है कि अतिरिक्त ओवरहेड इसके लायक नहीं है, तो व्यक्तिगत रूप से मैं इसे अभी भी एक जीत की स्थिति के रूप में देखूंगा क्योंकि डिज़ाइन अभी भी परीक्षण योग्य है। और अगर कभी परीक्षण या DI भविष्य में एक विकल्प है, तो डिजाइन आसानी से संभाल सकता है।