उनके रिटर्न प्रकार को बदलने की आवश्यकता होने पर कार्यों को बहिष्कृत करने के लिए क्या रणनीतियां हैं? उदाहरण के लिए, मेरे पास है:रिटर्न प्रकार बदलते समय फ़ंक्शन को कैसे हटाया जाए C++
BadObject foo(int); // Old function: BadObject is being removed.
Object foo(int); // New function.
Object
और BadObject
आंतरिक रूप से बहुत अलग हैं, और उनकी वापसी प्रकार की अदला-बदली मेरे पुस्तकालय की वर्तमान उपयोगकर्ताओं के लिए कोड टूट जाएगा। मैं इससे बचने का लक्ष्य रख रहा हूं।
मैं BadObject foo(int)
deprecated को चिह्नित कर सकता हूं, और उपयोगकर्ताओं को प्रभावित कोड बदलने के लिए समय देता हूं।
हालांकि, मैं can't overload foo
based on return-type। foo
बहुत अच्छी तरह से नामित है, और इसे अतिरिक्त पैरामीटर लेने की आवश्यकता नहीं है। कम से कम थोड़ी देर के लिए पुराने संस्करण को बनाए रखने के दौरान, मैं अपनी लाइब्रेरी में नया फ़ंक्शन कैसे जोड़ सकता हूं?
उपयोगकर्ताओं को नए संस्करण में माइग्रेट करने का समय प्रदान करते समय पुराने फ़ंक्शन को तोड़ने के बिना पुराने फ़ंक्शन को बहिष्कृत करने की रणनीति क्या है? आदर्श रूप से मैं वर्तमान फ़ंक्शन नाम और पैरामीटर सूची रखूंगा, क्योंकि इसका नाम अब बहुत अच्छा है। ऐसा लगता है कि इस एक सामान्य समस्या हो सकती है: इसे हल करने का एक अच्छा तरीका क्या है?
ठीक है, यदि उपयोगकर्ता मैन्युअल रूप से रिटर्न प्रकार टाइप करने के बजाय ऑटो का उपयोग करते हैं, तो सबकुछ स्वचालित रूप से काम करेगा :)। – ScarletAmaranth
यह आपकी मदद नहीं करता है, लेकिन सी ++ 11 इनलाइन नेमस्पेस इसके लिए बिल्कुल सही हैं। 'इनलाइन नेमस्पेस v0' में' foo' घोषित करें, जब एक परिवर्तन की आवश्यकता है 'इनलाइन नेमस्पेस v1' में' foo '' घोषित करें (और 'v0' से' इनलाइन' को हटाएं)। – mythagel