कुछ ऐसा जो मैंने खुद पाया है कि हाल ही में उस वर्ग के अंदर एक विशेष वर्ग के लिए प्रासंगिक टाइपफेड घोषित कर रहा है, अर्थात
class Lorem
{
typedef boost::shared_ptr<Lorem> ptr;
typedef std::vector<Lorem::ptr> vector;
//
// ...
//
};
इन प्रकारों का उपयोग कोड में कहीं और किया जाता है:
Lorem::vector lorems;
Lorem::ptr lorem( new Lorem() );
lorems.push_back( lorem );
कारण मुझे यह पसंद है:
- यह क्लास के टेम्प्लेट,
std::vector<Lorem>बनLorem::vector, आदि द्वारा शुरू किए गए शोर को कम करता है । - यह आशय के एक कथन के रूप में कार्य करता है - ऊपर के उदाहरण में, लोरम वर्ग को
boost::shared_ptrएक वेक्टर में के माध्यम से गिना और संग्रहीत किया गया संदर्भ माना जाता है। - यह कार्यान्वयन को बदलने की अनुमति देता है - अर्थात यदि लोरेम को
boost::intrusive_ptrबाद के चरण में आंतरिक रूप से संदर्भित (के माध्यम से ) को बदलने की आवश्यकता होती है तो इससे कोड पर न्यूनतम प्रभाव पड़ेगा। - मुझे लगता है कि यह 'प्रीतिकर' लगता है और यकीनन पढ़ने में आसान है।
कारण मुझे यह पसंद नहीं है:
- निर्भरता के साथ कभी-कभी मुद्दे होते हैं - यदि आप एक
Lorem::vectorअन्य वर्ग के भीतर , कहना चाहते हैं, लेकिन केवल लोरेम को आगे बढ़ाने की आवश्यकता है (या चाहते हैं) (जैसा कि इसकी हेडर फ़ाइल पर निर्भरता शुरू करने का विरोध किया गया है) तो आप का उपयोग करना समाप्त होता है। स्पष्ट प्रकार (उदाहरण केboost::shared_ptr<Lorem>बजायLorem::ptr), जो थोड़ा असंगत है। - यह बहुत आम नहीं हो सकता है, और इसलिए समझना मुश्किल है?
मैं अपनी कोडिंग शैली के साथ उद्देश्यपूर्ण होने की कोशिश करता हूं, इसलिए उस पर कुछ अन्य राय प्राप्त करना अच्छा होगा ताकि मैं अपनी सोच को थोड़ा सा विच्छेदित कर सकूं।