मैं हाल ही में कक्षाओं में आया हूं जो कॉन्फ़िगरेशन के लिए सामान्य सेटटर विधियों के बजाय कॉन्फ़िगरेशन ऑब्जेक्ट का उपयोग करते हैं। एक छोटा सा उदाहरण:कॉन्फ़िगरेशन स्ट्रक्चर बनाम सेटर्स
class A {
int a, b;
public:
A(const AConfiguration& conf) { a = conf.a; b = conf.b; }
};
struct AConfiguration { int a, b; };
तेजी:
- आप अपने वस्तु का विस्तार कर सकते हैं और आसानी से अपने उपयोगकर्ताओं को कभी इसके बारे में पता करने के लिए की जरूरत के बिना नए मूल्यों के लिए उचित मूलभूत मूल्यों की गारंटी।
- आप स्थिरता के लिए कॉन्फ़िगरेशन की जांच कर सकते हैं (उदा। आपकी कक्षा केवल मूल्यों के कुछ संयोजनों की अनुमति देती है)
- आप सेटर्स को ओमेट करके बहुत सारे कोड को सहेजते हैं।
- आपको अपने कॉन्फ़िगरेशन स्ट्रक्चर के लिए डिफ़ॉल्ट कन्स्ट्रक्टर निर्दिष्ट करने के लिए एक डिफ़ॉल्ट कन्स्ट्रक्टर मिलता है और
A(const AConfiguration& conf = AConfiguration())
का उपयोग करें।
नकारात्मक पक्ष (ओं):
- आप निर्माण समय विन्यास पता करने की जरूरत है और बाद में इसे बदल नहीं सकते हैं।
क्या मुझे याद आ रही है कि इसके लिए और अधिक डाउनसाइड्स हैं? यदि नहीं हैं: यह अधिक बार क्यों उपयोग नहीं किया जाता है?
मैंने हाल ही में इसे पुराने कोड-बेस के साथ चलाया है जिसका मैं समर्थन कर रहा हूं। यह काफी परेशान है। –
विंडोज एपीआई आकार आकार जोड़कर यह ठीक करता है, यह सुनिश्चित करता है कि structs पीओडी हैं, और अंत में केवल डेटा फ़ील्ड जोड़कर। नए structs (नए क्षेत्रों के लिए उचित डिफ़ॉल्ट मान के साथ) बनाने के लिए पुरानी रचनाकारों का समर्थन जोड़ें और संगतता वास्तव में _increased_ है। – sbi
मैंने एक दर्पण उत्तर लिखा, जहां मैं दिखाता हूं कि इसके बजाय संगतता बढ़ी है। –