नहीं, कोई मानक दिशानिर्देश नहीं है
लेकिन कुछ तकनीकें हैं जो कई मापदंडों के साथ एक फ़ंक्शन कर सकती हैं जो अधिक मुस्कराते हैं।
आप एक सूची-if-args पैरामीटर (args *) या डिक्शनरी-ऑफ-args पैरामीटर (kwargs) का उपयोग कर सकते हैं**
) का उपयोग कर सकते हैं
उदाहरण के लिए, अजगर में:
// Example definition
def example_function(normalParam, args*, kwargs**):
for i in args:
print 'args' + i + ': ' + args[i]
for key in kwargs:
print 'keyword: %s: %s' % (key, kwargs[key])
somevar = kwargs.get('somevar','found')
missingvar = kwargs.get('somevar','missing')
print somevar
print missingvar
// Example usage
example_function('normal parameter', 'args1', args2,
somevar='value', missingvar='novalue')
आउटपुट:
args1
args2
somevar:value
someothervar:novalue
value
missing
या आप ऑब्जेक्ट शाब्दिक परिभाषा वाक्य रचना का उपयोग कर सकते हैं
उदाहरण के लिए, यहां AJAX GET अनुरोध लॉन्च करने के लिए जावास्क्रिप्ट jQuery कॉल है:
$.ajax({
type: 'GET',
url: 'http://someurl.com/feed',
data: data,
success: success(),
error: error(),
complete: complete(),
dataType: 'jsonp'
});
यदि आप jQuery के ajax वर्ग पर एक नज़र डालते हैं तो बहुत सारे (लगभग 30) अधिक गुण हैं जो सेट किए जा सकते हैं; ज्यादातर क्योंकि अजाक्स संचार बहुत जटिल हैं। सौभाग्य से, ऑब्जेक्ट शाब्दिक वाक्य रचना जीवन को आसान बनाता है।
C # intellisense मापदंडों के सक्रिय प्रलेखन प्रदान करता है इसलिए अतिभारित विधियों की बहुत जटिल व्यवस्था को देखना असामान्य नहीं है।
अजगर / जावास्क्रिप्ट जैसी डायनामिक रूप से टाइप की गई भाषाओं में ऐसी कोई क्षमता नहीं होती है, इसलिए यह कीवर्ड तर्क और वस्तु शाब्दिक परिभाषाओं को देखने के लिए बहुत अधिक सामान्य है।
मैं ऑब्जेक्ट शाब्दिक परिभाषाएं पसंद करता हूं ( यहां तक कि सी # में भी) जटिल तरीकों के प्रबंधन के लिए ) को क्योंकि आप स्पष्ट रूप से देख सकते हैं कि जब किसी वस्तु को त्वरित किया जाता है तो कौन से गुण सेट किए जा रहे हैं। आपको डिफ़ॉल्ट तर्क को संभालने के लिए थोड़ा और काम करना होगा लेकिन लंबे समय में आपका कोड बहुत अधिक पठनीय होगा। ऑब्जेक्ट शाब्दिक परिभाषाओं के साथ आप यह समझने के लिए प्रलेखन पर अपनी निर्भरता को तोड़ सकते हैं कि आपका कोड पहली नज़र में क्या कर रहा है।
IMHO, अतिभारित तरीके अत्यधिक ओवररेटेड हैं।
नोट: यदि मुझे याद है कि सही ढंग से अभिगम नियंत्रण सी # में शाब्दिक निर्माणकर्ताओं के लिए काम करना चाहिए। वे अनिवार्य रूप से निर्माणकर्ता में गुण सेट करने के समान काम करते हैं।
यदि आपने डायनामिक रूप से टाइप किए गए (अजगर) और / या कार्यात्मक / प्रोटोटाइप जावा स्क्रिप्ट पर आधारित भाषा में कभी भी कोई गैर-तुच्छ कोड नहीं लिखा है, तो मैं अत्यधिक कोशिश कर रहा हूं। यह एक ज्ञानवर्धक अनुभव हो सकता है।
यह अंत में सभी के लिए मापदंडों पर अपनी निर्भरता को तोड़ने के लिए पहले डरावना हो सकता है, फ़ंक्शन / विधि आरंभीकरण के लिए सभी दृष्टिकोण हो, लेकिन आप अनावश्यक जटिलता को जोड़ने के बिना अपने कोड के साथ इतना अधिक करना सीखेंगे।
अपडेट करें:
मुझे संभवतः एक सांख्यिकीय रूप से टाइप की गई भाषा में उपयोग प्रदर्शित करने के लिए उदाहरण प्रदान करने चाहिए थे, लेकिन मैं वर्तमान में एक सांख्यिकीय रूप से टाइप किए गए संदर्भ में नहीं सोच रहा हूं। असल में, मैं एक गतिशील रूप से टाइप किए गए संदर्भ में बहुत अधिक काम कर रहा हूं ताकि अचानक वापस स्विच किया जा सके।
क्या मैं करना जानते वस्तु शाब्दिक परिभाषा वाक्य रचना स्थिर टाइप किया भाषाओं में पूरी तरह से संभव है (कम से कम सी # और जावा में) क्योंकि मैं उन्हें पहले इस्तेमाल किया गया है। सांख्यिकीय रूप से टाइप की गई भाषाओं में उन्हें 'ऑब्जेक्ट इनिशियलाइज़र' कहा जाता है। जावा और सी # में उनके उपयोग को दिखाने के लिए यहां कुछ लिंक दिए गए हैं ।