कुछ ऐसा जो मुझे मिल गया है अपने आप को अक्सर हाल ही में कर रही है कि वर्ग के भीतर एक विशेष वर्ग के लिए प्रासंगिक typedefs घोषित किया जाता है, यानीसी ++ में आंतरिक टाइपपीफ - अच्छी शैली या खराब शैली?
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
चाहते हैं (या चाहते हैं) घोषित अग्रेषित करने के लिए Lorem (इसके शीर्षलेख फ़ाइल पर निर्भरता पेश करने के विरोध में) तो आपLorem::ptr
के बजाय स्पष्ट प्रकारों (उदाहरण के लिएboost::shared_ptr<Lorem>
) का उपयोग करना समाप्त कर देते हैं, जो थोड़ा असंगत है। - यह बहुत आम नहीं हो सकता है, और इसलिए समझना मुश्किल है?
मैं अपनी कोडिंग शैली के साथ उद्देश्य बनने की कोशिश करता हूं, इसलिए इस पर कुछ और राय प्राप्त करना अच्छा होगा ताकि मैं अपनी सोच को थोड़ा विच्छेद कर सकूं।
यह एक अच्छा मुद्दा है, मुझे आश्चर्य है कि यह 'सुंदर' दिख रहा था, मेरा अवचेतन सौहार्दपूर्ण रूप से इंगित करता था कि सीमित गुंजाइश एक * अच्छी * चीज है। मुझे आश्चर्य है कि, क्या तथ्य यह है कि एसटीएल मुख्य रूप से कक्षा टेम्पलेट्स में इसका उपयोग करता है, यह एक अलग अलग उपयोग करता है? क्या 'कंक्रीट' कक्षा में औचित्य साबित करना मुश्किल है? –
वैसे मानक पुस्तकालय वर्गों की बजाय टेम्पलेट्स से बना है, लेकिन मुझे लगता है कि दोनों के लिए औचित्य समान है। –