मुझे सामान्यीकरण बनाम बहुरूपता के संबंध में निर्णय लेना है।सी ++ मानक अभ्यास: वर्चुअल इंटरफ़ेस कक्षा बनाम टेम्पलेट्स
अच्छी तरह से परिदृश्य मानक है: मैं अपने मोनोलिथिक परस्पर निर्भर कोड को अधिक मॉड्यूलर, स्वच्छ और एक्स्टेंसिबल बनाना चाहता हूं। यह अभी भी एक मंच में है जहां डिजाइन सिद्धांत में परिवर्तन करने योग्य है, और, जैसा कि मैंने इसे देखा, अत्यधिक वांछनीय।
क्या मैं पूरी तरह वर्चुअल बेस क्लासेस (इंटरफेस) या टेम्पलेट्स पेश करूंगा?
मैं टेम्पलेट विकल्प के बारे में मूल बातें के बारे में पता कर रहा हूँ: कम अविवेक, बेहतर प्रदर्शन, अधिक लेकिन कोई लेट बाइंडिंग, और इतने पर संकलन।
एसटीएल ज्यादा (या कोई नहीं?) विरासत का उपयोग नहीं करता है, और बढ़ावा भी नहीं होता है। लेकिन मुझे लगता है कि उन लोगों को वास्तव में छोटे मूल उपकरण होने का लक्ष्य है जिनका उपयोग प्रोग्रामर द्वारा कोड की प्रत्येक पंक्ति के 2 लाइनों का उपयोग किया जाता है।
मैं विचार विरासत और लेट बाइंडिंग दृष्टिकोण के लिए और अधिक समझदार होने के लिए प्लग-इन जो परस्पर विनिमय किया जाना चाहिए कोड और कार्यक्षमता के बड़े टुकड़े से अपडेट किए जाने आदि तैनाती के बाद या यहाँ तक कि रनटाइम के दौरान, की शैली।
खैर मेरा परिदृश्य कुछ हद तक भीतर है।
मुझे रनटाइम पर फ्लाई पर कोड के टुकड़ों का आदान-प्रदान करने की आवश्यकता नहीं है, संकलन समय ठीक है। आमतौर पर यह कार्यक्षमता का एक बहुत ही केंद्रीय और अक्सर उपयोग किया जाने वाला टुकड़ा है, यह बड़े ब्लॉक में तर्कसंगत रूप से अलग नहीं है।
इससे मुझे कुछ हद तक टेम्पलेट समाधान की सुविधा मिलती है। मेरे लिए यह कुछ हद तक क्लीनर भी दिखता है।
क्या कोई बड़ा बुरा प्रभाव है, क्या इंटरफेस अभी भी जाने के लिए हैं? वे कब नहीं हैं जो मानक सी ++ शैली के साथ अधिक अनुपालन करता है?
मुझे पता है कि यह व्यक्तिपरक पर सीमा है, लेकिन मुझे वास्तव में कुछ अनुभवों में दिलचस्पी है। मैं स्कॉट Meyers प्रभावी सी की एक प्रति के स्वामी नहीं हैं ++ इसलिए मैं अपने उम्मीदें तुम लोग :)
अच्छी तरह से मुझे इंटरफेस की बजाय टेम्पलेट का उपयोग करके एक समस्या दिखाई देती है: आवश्यकताएं पूरी तरह निहित हैं। जब आपको शुद्ध वर्चुअल फ़ंक्शन को लागू करना होता है, तो आपको इसका सटीक हस्ताक्षर दिया जाता है। लेकिन जब आप टेम्पलेट प्रकार जैसे _AllocT या Iter देखते हैं तो आपको पता नहीं है कि आपकी कक्षा के पास क्या होना आवश्यक है और न ही यह कक्षा भी होनी चाहिए। जानने का आपका एकमात्र तरीका यह है कि इसके बारे में एक सभ्य दस्तावेज़ीकरण की तलाश है, जो मुझे अपनी खुद की एसएलएल-संगत आवंटक वर्ग बनाने की कोशिश करते समय आज करने में परेशानी थी। – Virus721
"आप इसे जानने का एकमात्र तरीका यह है कि इसके बारे में एक सभ्य दस्तावेज़ीकरण की तलाश कर रहे हैं" - या कंपाइलर को कौन सा फ़ंक्शंस ढूंढने में असमर्थ होने के बारे में शिकायत करने की कोशिश करके, हां। इसके अलावा, अवधारणाओं का उद्देश्य इस समस्या को हल करना है। (और यदि यह एक इंटरफेस भी था, तो भी आपको सभ्य दस्तावेज खोजने की आवश्यकता होगी।यह जानने के लिए कि कौन से फ़ंक्शन ओवरराइड करना पर्याप्त नहीं है। आपको यह जानने की भी आवश्यकता है कि उनके अर्थशास्त्र क्या होना चाहिए, और इंटरफ़ेस आपको यह नहीं बताता है)। फिर भी, आप सही हैं। एक कारण है कि भाषा दोनों का समर्थन करता है। :) – jalf