कभी-कभी (शायद ही कभी), ऐसा लगता है कि एक फ़ंक्शन बनाना जो एक सभ्य मात्रा में पैरामीटर लेता है सबसे अच्छा मार्ग है।
कई मापदंडों का उपयोग करना अक्सर एक स्पष्ट संकेतक होता है, कि आप इस विधि में SRP का उल्लंघन करते हैं । एक विधि, जिसमें कई मापदंडों की आवश्यकता होती है, केवल एक ही काम करने की संभावना नहीं है। एक्सपटेशन एक गणितीय फ़ंक्शन या कॉन्फ़िगरेशन विधि हो सकती है, जहां वास्तव में ऐसे कई मापदंडों की आवश्यकता होती है। मैं कई मापदंडों से बचता हूं क्योंकि शैतान पवित्र जल से बचता है। एक विधि के भीतर आप जितने अधिक मापदंडों का उपयोग करते हैं, उतने अधिक अवसर, कि विधि (बहुत) जटिल है; अधिक जटिलता का अर्थ है: बनाए रखने के लिए कठिन और वह कम वांछनीय है।
हालांकि, जब मैं करता हूं, तो मुझे लगता है कि मैं अक्सर यादृच्छिक पर मापदंडों का क्रम चुन रहा हूं। मैं आमतौर पर "सबसे महत्वपूर्ण पैरामीटर" के साथ पहले "महत्व के क्रम" से जाता हूं।
प्रिंसिपल में आप यादृच्छिक पर चुन रहे हैं । बेशक आप सोच सकते हैं कि पैरामीटर A , पैरामीटर B से अधिक प्रासंगिक है ; लेकिन आपके एपीआई के उपयोगकर्ताओं के लिए ऐसा नहीं हो सकता है, जो सोचते हैं कि बी सबसे प्रासंगिक पैरामीटर है। तो भले ही आप ऑर्डर चुनने में चौकस थे - दूसरों के लिए यह यादृच्छिक लग सकता है ।
क्या ऐसा करने के लिए इससे अच्छा तरीका है? क्या स्पष्टता को बढ़ाने वाले मापदंडों को आदेश देने का एक "सर्वोत्तम अभ्यास" तरीका है?
कई तरीके हैं:
क) तुच्छ मामला: एक से अधिक पैरामीटर का उपयोग न करें।
ख) जैसा कि आपने निर्दिष्ट नहीं किया है कि आपने कौन सी भाषा चुनी है, इस बात की संभावना है कि आपने नामांकित मापदंडों के साथ एक भाषा चुनी है । यह अच्छा सिन्सेटिक शुगर है जो आपको पैरामेट्स के ऑर्डर के महत्व को ढीला करने की अनुमति देता है:fn(name:"John Doe", age:36)
हर भाषा ऐसी बारीकियों की अनुमति नहीं देती है। तो फिर क्या?
ग) आप एक डिक्शनरी के रूप में डिक्शनरी / हैशमैप / एसोसिएटिव एरे का उपयोग कर सकते हैं : उदाहरण के लिए जावास्क्रिप्ट निम्नलिखित की अनुमति देगा: fn({"name":"John Doe", age:36})
जो (बी) से बहुत दूर नहीं है।
d) निश्चित रूप से यदि आप जावा जैसी सांख्यिकीय रूप से टाइप की गई भाषा के साथ काम करते हैं । आप एक Hashmap का उपयोग कर सकते हैं , लेकिन आप टाइपिनफॉर्म को ढीला कर सकते हैं (जैसे जब काम कर रहे हों HashMap<String, Object>
) जब पैरामीटर अलग-अलग प्रकार के होते हैं (और डालने की आवश्यकता होती है)।
अगला तार्किक कदम Object
उपयुक्त गुणों के साथ एक (यदि आप जावा का उपयोग कर रहे हैं) पास करना होगा या एक संरचना की तरह अधिक हल्का होगा (यदि आप उदाहरण के लिए C # या C / C ++ लिखते हैं)।
अंगूठे का नियम:
1) सबसे अच्छा मामला - आपकी विधि को किसी भी पैरामीटर की आवश्यकता नहीं है
2) अच्छा मामला - आपकी विधि को एक पैरामीटर की आवश्यकता है
3) सहन करने योग्य मामला - आपकी विधि को दो मापदंडों की आवश्यकता है
4) अन्य सभी मामलों को फिर से दर्ज किया जाना चाहिए
MessageBox.Show
। उस पर भी गौर करें।