आप शायद जानते हैं कि लेकिन मैं बस निम्नलिखित करूंगा:
class Person {
public:
std::string name() {
return _name;
}
void name(std::string value) {
_name = value;
}
private:
std::string _name;
};
यह दृष्टिकोण सरल है, कोई चालाक चाल का उपयोग नहीं करता है और यह काम पूरा कर लेता है!
हालांकि मुद्दा यह है कि कुछ लोग अपने निजी क्षेत्रों को अंडरस्कोर के साथ उपसर्ग करना पसंद नहीं करते हैं और इसलिए वे वास्तव में इस दृष्टिकोण का उपयोग नहीं कर सकते हैं, लेकिन सौभाग्य से जो लोग ऐसा करते हैं, वह वास्तव में सीधा है। :)
प्राप्त और सेट उपसर्ग आपके एपीआई में स्पष्टता नहीं जोड़ते हैं, लेकिन उन्हें और अधिक क्रियाशील बनाते हैं और इसका कारण मुझे नहीं लगता कि वे उपयोगी जानकारी जोड़ते हैं क्योंकि जब किसी को एपीआई का उपयोग करने की आवश्यकता होती है यदि एपीआई समझ में आता है तो उसे शायद यह एहसास होगा कि यह क्या है उपसर्गों के बिना करता है।
एक और बात, यह समझ लेना आसान है कि ये गुण हैं क्योंकि name
क्रिया नहीं है।
सबसे खराब स्थिति, अगर एपीआई संगत है और व्यक्ति को यह समझ नहीं आया कि name()
एक एक्सेसर और हैname(value)
एक एक्सेसर है एक उत्परिवर्ती है तो उसे पैटर्न को समझने के लिए प्रलेखन में केवल एक बार इसे देखना होगा।
जितना मैं सी # से प्यार करता हूं, मुझे नहीं लगता कि सी ++ को गुणों की आवश्यकता है!