जब मेरे पास एक फ़ंक्शन है जो एक निश्चित पैरामीटर प्राप्त कर सकता है, या नहीं कर सकता है, तो क्या फ़ंक्शन को अधिभार करना बेहतर है, या वैकल्पिक आर्गन जोड़ना है?
यदि प्रत्येक के पास उतार-चढ़ाव है - तो मैं प्रत्येक का उपयोग कब करूंगा?
जब मेरे पास एक फ़ंक्शन है जो एक निश्चित पैरामीटर प्राप्त कर सकता है, या नहीं कर सकता है, तो क्या फ़ंक्शन को अधिभार करना बेहतर है, या वैकल्पिक आर्गन जोड़ना है?
यदि प्रत्येक के पास उतार-चढ़ाव है - तो मैं प्रत्येक का उपयोग कब करूंगा?
जवाबों:
यदि भाषा उन्हें ठीक से समर्थन करती है (उदाहरण के लिए-सुरक्षा, यदि लागू हो), तो मैं निम्नलिखित कारणों के लिए वैकल्पिक तर्क पसंद करूंगा:
a
, b
और c
इन संभावनाएं हैं: कुछ भी नहीं, ए, बी, सी, एबी, एसी, बीसी, एबीसी। यह 2^n
विभिन्न प्रकारों के लिए है, नहींn!
एक निर्माता की तरह की स्थिति को मानते हुए: मैं अक्सर कई विकल्पों के साथ स्थितियों को रोकने के लिए एक धाराप्रवाह बिल्डर पैटर्न चुनता हूं।
उदाहरण के लिए। Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
अमरूद में कार्यान्वित धाराप्रवाह बिल्डर इंटरफ़ेस को कॉल करने का एक उदाहरण है।
बेशक आपको अब अपने बिल्डर की स्थिति को संभालने के लिए एक अलग वस्तु की आवश्यकता है, लेकिन आप निर्माण के व्यवहार से निर्माण के व्यवहार को अलग करके समग्र जटिलता को कम करते हैं।