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