क्या जावा में डिप्रेस्ड तरीकों या कक्षाओं का उपयोग करना गलत है?


153

मैं वेब एप्लिकेशन विकसित करने के लिए ग्रहण का उपयोग कर रहा हूं। बस आज मैंने JAR फ़ाइल को बदलकर अपने स्ट्रट्स संस्करण को अपडेट किया है। मुझे कुछ स्थानों पर चेतावनी मिल रही है कि विधियाँ पदावनत हैं, लेकिन कोड ठीक काम कर रहा है।

मैं कुछ बातें जानना चाहता हूं

  1. क्या जावा में डिप्रेस्ड तरीकों या कक्षाओं का उपयोग करना गलत है?

  2. क्या होगा अगर मैं किसी भी तरीके को नहीं बदलता और अपने आवेदन को चेतावनी के साथ चलाता हूं, जो मेरे पास है, क्या यह कोई प्रदर्शन समस्या पैदा करेगा।


7
1955 Volkswagen Beetleयदि आप Corvette Stingrayमुफ्त में भी आपको पेश करते हैं , तो क्या आप इसे जारी रखेंगे ? (0:
KMå

75
@KMan आप एक यूरोपीय कार की तुलना अमेरिकी कार से कर रहे हैं?)
ponzao

2
@Ponzao और 4अन्य: पकड़ लिया! (0;
केएमएन

2
गलत? क्या हम यहां नश्वर या सिर्फ जहरीले वंचना की बात कर रहे हैं?
FastAl

5
@Alexander आपकी टिप्पणी के लिए कोई वोट नहीं है, तो आपके लिए भी +1;) किसी भी मामले में, कठोर है कि नया कोड 1000 बेहतर है तो पुराने कोड। तुलना नए टायरों के बीच 1955 Volkswagen Beetleऔर बेहतर होगी 1956 Volkswagen Beetleजो आपको नहीं पता कि कब टूटेगा!
एलेक्स

जवाबों:


265

1. क्या जावा में डिप्रेस्ड तरीकों या कक्षाओं का उपयोग करना गलत है?

से पदावनत की परिभाषा :

@Deprecated का एक प्रोग्राम तत्व है जिसे प्रोग्रामर उपयोग करने से हतोत्साहित करते हैं, आमतौर पर क्योंकि यह खतरनाक है, या क्योंकि एक बेहतर विकल्प मौजूद है।

अनिर्दिष्ट अवधि के लिए पिछड़े संगतता के लिए एपीआई को विधि में रखा जाता है, और भविष्य में रिलीज को हटाया जा सकता है। यही है, नहीं, यह गलत नहीं है , लेकिन इसे करने का एक बेहतर तरीका है, जो एपीआई परिवर्तनों के खिलाफ अधिक मजबूत है।

2. क्या होगा अगर मैं किसी भी तरीके को नहीं बदलता हूं और अपने आवेदन को चेतावनी के साथ चलाता हूं, जो मेरे पास है, क्या यह कोई प्रदर्शन समस्या पैदा करेगा।

बहुधा सं। यह पदावनति के पहले की तरह काम करता रहेगा। एपीआई विधि का अनुबंध नहीं बदलेगा। यदि कुछ आंतरिक डेटा संरचना एक नई, बेहतर विधि के पक्ष में बदलती है, तो एक प्रदर्शन प्रभाव हो सकता है, लेकिन यह काफी संभावना नहीं है।


सबसे मजेदार प्रतिवाद जावा एपीआई में, imo, है FontMetrics.getMaxDecent। पदावनति का कारण: वर्तनी की त्रुटि।

पदावनत। JDK संस्करण 1.1.1 के रूप में, getMaxDescent () द्वारा प्रतिस्थापित किया गया।


5
जावा एपीआई में अगली सबसे मजेदार पदयात्रा की जाएगी। उन दोनों के लिए तैयार हो जाओ! ;)
जावाटेक्निकल

3
हमें HTTP रेफर के साथ ऐसा करने की आवश्यकता है। यह
पागल है

1
@DaveMcClelland, इसे 69 से 70: D;) बनाया
VdeX

28

आप अब भी प्रदर्शन में बदलाव किए बिना पदावनत कोड का उपयोग कर सकते हैं, लेकिन विधि / वर्ग को चित्रित करने का पूरा बिंदु उपयोगकर्ताओं को यह बताने का है कि अब इसका उपयोग करने का एक बेहतर तरीका है, और भविष्य के रिलीज़ में हटाए गए कोड को हटा दिए जाने की संभावना है।


1
आप यह कैसे सुनिश्चित कर सकते हैं कि यह प्रदर्शन में बदलाव के बिना है? उदाहरण के लिए ह्राससेट आंतरिक डेटा संरचना के परिवर्तन के कारण हो सकता है , उदाहरण के लिए हैशसेट से ट्रीसेट तक।
20

@aioobe - मेरी समझ से, ओपी ने पूछा कि क्या डिप्रेस्ड कोड को कॉल करने से कोई प्रदर्शन समस्याएँ होती हैं, जो यह नहीं बताती है कि यह उत्पादित बाइट कोड में बदलाव नहीं करती है (1.5 से पहले javadoc में थी, अब एनोटेशन उपयोग में है, लेकिन अभी भी प्रदर्शन में कोई बदलाव नहीं हुआ है)
abyx

लाइब्रेरी के एक संस्करण से दूसरे में जाने पर, इस बात की कोई गारंटी नहीं है कि नए संस्करण में किसी विधि का बाइट कोड पिछले संस्करण में उसी पद्धति के बाइट कोड के समान है।
एरियोबे

@aioobe - इस बात की गारंटी है कि बस इसे अपदस्थ करने से बाइट कोड नहीं बदलेगा, जो मुझे लगता है कि ओपी का मतलब है। बेशक कोड ही बदल जाता है, यही वजह है कि हम कोड को अपदस्थ कर देते हैं।
abyx

यदि आप पहले की तरह ही संस्करण का उपयोग करते रहते हैं, तो कोई परिवर्तन नहीं होता है। लेकिन अगर आप लाइब्रेरी के नए संस्करण का उपयोग करते हैं, और उनके पास एपीआई में कोई कमी नहीं है, तो सीओयूएलडी के प्रदर्शन में बदलाव होगा, यदि अंतर्निहित कार्यान्वयन में भारी बदलाव होता है और नया एपीआई इसका लाभ उठाता है, जबकि पुराने एपीआई के रूप में नहीं है। इस नए ढाँचे के विपरीत, जैसा कि यह हुआ करता था।
ग्रेगटर्न

21

शब्दावली

आधिकारिक सूर्य शब्दावली से:

पदावनत : एक वर्ग, इंटरफ़ेस, कंस्ट्रक्टर, विधि या क्षेत्र का संदर्भ देता है जिसकी अब अनुशंसा नहीं की जाती है, और भविष्य के संस्करण में मौजूद नहीं रह सकता है।

कैसे और कब-कब मार्गदर्शक को पदावनत करें:

आपने शब्द "स्वयंभू हास्य," या हास्य को सुना है जो वक्ता के महत्व को कम करता है। एक पदावनत वर्ग या तरीका ऐसा है। यह अब महत्वपूर्ण नहीं है। यह इतना महत्वहीन है, वास्तव में, आपको इसका उपयोग नहीं करना चाहिए, क्योंकि यह अलग हो चुका है और भविष्य में अस्तित्व में नहीं रह सकता है।

@Deprecatedएनोटेशन एक कदम आगे चला गया और खतरे की चेतावनी दी है:

प्रोग्राम प्रोग्राम एनोटेट @Deprecatedवह है जिसे प्रोग्रामर उपयोग करने से हतोत्साहित करते हैं, आमतौर पर क्योंकि यह खतरनाक है , या क्योंकि एक बेहतर विकल्प मौजूद है।

संदर्भ


सही या गलत?

पदावनत विधियों का उपयोग करना सही है या गलत इसका प्रश्न व्यक्तिगत आधार पर जांचना होगा। यहां सभी उद्धरण हैं जहां "पदावनत" शब्द दिखाई देता है प्रभावी जावा 2 संस्करण :

आइटम 7: फाइनल से बचें : अंतिम रूप देने के लिए दावा करने वाले एकमात्र तरीके हैं System.runFinalizersOnExitऔर इसकी बुराई जुड़वां Runtime.runFinalizersOnExit। इन विधियों को मोटे तौर पर त्रुटिपूर्ण किया गया है और उन्हें हटा दिया गया है।

आइटम 66: साझा किए गए परिवर्तनशील डेटा तक पहुंच को सिंक्रनाइज़ करें : लाइब्रेरी प्रदान करते हैंThread.stop विधि , लेकिन यह विधि बहुत पहले ही हटा दी गई थी क्योंकि यह स्वाभाविक रूप से असुरक्षित है - इसके उपयोग से डेटा भ्रष्टाचार हो सकता है।

आइटम 70: दस्तावेज़ थ्रेड सुरक्षा : System.runFinalizersOnExitविधि थ्रेड-शत्रुतापूर्ण है और हटा दिया गया है।

आइटम 73: थ्रेड समूहों से बचें : वे आपको कुछ Threadप्राइमरी को एक ही बार में थ्रेड के एक समूह में लागू करने की अनुमति देते हैं । इनमें से कई प्राइमिटिव्स को हटा दिया गया है, और शेष का आमतौर पर उपयोग किया जाता है। [...] थ्रेड समूह अप्रचलित हैं।

कम से कम उपरोक्त सभी विधियों के साथ, उनका उपयोग करना स्पष्ट रूप से गलत है, कम से कम जोश बलोच के अनुसार।

अन्य तरीकों के साथ, आपको व्यक्तिगत रूप से मुद्दों पर विचार करना होगा, और समझना होगा WHY को कि उन्हें पदावनत गया था, लेकिन आम तौर पर बोलना, जब पदावनत करने का निर्णय उचित है, तो उनका उपयोग जारी रखने के लिए सही से गलत की ओर झुकाव होगा।

संबंधित सवाल


3
"पदावनत" लैटिन "डे" + "अग्रारे" से है जिसका अर्थ "विरुद्ध प्रार्थना करना" है। जब किसी चीज को पदावनत के रूप में वर्णित किया जाता है तो एक मानक प्रार्थना करता है - भीख माँगना - आप इसका उपयोग नहीं करते हैं; यह एक चेतावनी है कि इसे उस मानक के भविष्य के संस्करण में हटाया जा सकता है। ध्यान दें कि उस मानक के वर्तमान संस्करण के किसी भी कार्यान्वयन में एक चित्रित सुविधा को पूरी तरह से लागू करने की आवश्यकता है। आपका आत्म-हीनता का उल्लेख थोड़ा-सा ऑफ-द-मार्क है, हालाँकि; उस अर्थ में "आत्म-ह्रास", "आत्म-ह्रास" का एक भ्रष्टाचार है, जिसकी एक अलग व्युत्पत्ति और अर्थ है।
dajames

17

उपरोक्त सभी उत्कृष्ट प्रतिक्रियाओं के अलावा मैंने पाया कि अपग्रेडेड एपीआई कॉल को हटाने का एक और कारण है।

इस बात पर शोध करें कि एक कॉल को पदावनत क्यों किया जाता है मैं अक्सर जावा / एपीआई / फ्रेमवर्क के बारे में दिलचस्प चीजें सीखता हूं। अक्सर एक अच्छा कारण होता है कि क्यों एक विधि को पदावनत किया जा रहा है और इन कारणों को समझने से गहरी अंतर्दृष्टि प्राप्त होती है।

तो सीखने / बढ़ने के दृष्टिकोण से, यह भी एक सार्थक प्रयास है


11

यह निश्चित रूप से एक प्रदर्शन मुद्दा नहीं बनाता है - भविष्य में हटाए गए साधनों का मतलब है कि यह संभव है कि फ़ंक्शन अब लाइब्रेरी का हिस्सा नहीं होगा, इसलिए आपको इसे नए कोड में उपयोग करने से बचना चाहिए और इसका उपयोग करने से रोकने के लिए अपना पुराना कोड बदलना चाहिए, इसलिए जब आप स्ट्रट्स को अपग्रेड करते हैं तो आप एक दिन समस्याओं में नहीं आते हैं और पाते हैं कि फ़ंक्शन अब मौजूद नहीं है


1
अनुभव से देखते हुए, "पदावनत" का वास्तव में अर्थ है "आपको इसे और अधिक उपयोग नहीं करना चाहिए, लेकिन यह हमेशा और हमेशा के लिए उपलब्ध होगा।" कम से कम जावा मानक एपीआई के लिए, मुझे पदावनत किए जाने के बाद वास्तव में हटाए जाने वाले किसी भी तरीके या वर्ग के बारे में पता नहीं है।
माइकल बोर्गवर्ड

1
@Michael खैर, व्यवहार में एपीआई शायद ही कभी हटाए गए कार्यों को हटाते हैं क्योंकि उन्हें "वॉर्निंग: स्टॉप यूज़ थिंग फ़ोल" के आउटपुट के साथ दस वर्षों के लिए पदावनत किया जा सकता है, और लोग अभी भी उस दिन से बाहर निकल जाएंगे, जब उन्होंने इसे हटा दिया था। मुझे लगता है कि पदावनत का मतलब है "किसी दिन हम इसे बाहर निकालना चाहते हैं, इसलिए कृपया इसका उपयोग करना बंद करें", भले ही व्यवहार में यह वास्तव में शायद ही कभी होता है
माइकल Mrozek

@ मिचेल मिर्जेक: बयान से असहमत It certainly doesn't create a performance issue; यह बताने के लिए भी व्यक्तिपरक है कि।
KMå

1
@KMan एक समारोह के रूप में चिह्नित किया जा रहा है किसी तरह इसे कम कुशल नहीं बनाता है, तो यह चिह्नित होने से पहले था - यह पहले की तरह ही चलेगा
माइकल Mrozek

@ मिचेल बोर्गवर्ड: यह सबसे मानकीकृत भाषाओं में काम करता है। और, ज़ाहिर है, अगर कुछ भी हटा दिया गया था, मानक से हटा दिया जाना था, तो लोकप्रिय कार्यान्वयन इसे विस्तार के रूप में रखेंगे।
डेविड थॉर्नले

8

यह गलत नहीं है, यह सिर्फ अनुशंसित नहीं है। इसका आम तौर पर अर्थ है कि इस बिंदु पर चीजों को करने का एक बेहतर तरीका है और यदि आप नए बेहतर तरीके का उपयोग करते हैं तो आप अच्छा करेंगे। कुछ हटाए गए सामान वास्तव में खतरनाक हैं और पूरी तरह से बचा जाना चाहिए। नया तरीका अपदस्थ से बेहतर प्रदर्शन कर सकता है, लेकिन यह हमेशा ऐसा नहीं होता है।


8

आपने शब्द सुना होगा, "आत्म-चित्रण हास्य"। वह हास्य है जो आपके महत्व को कम करता है। एक पदावनत वर्ग या तरीका ऐसा है। यह अब महत्वपूर्ण नहीं है। यह बहुत महत्वहीन है, वास्तव में, इसका उपयोग अब बिल्कुल नहीं किया जाना चाहिए, क्योंकि यह भविष्य में अस्तित्व में नहीं रहेगा।

इससे बचने की कोशिश करें


4
  1. आम तौर पर नहीं, deprecatedजब तक आपके द्वारा उपयोग की जा रही लाइब्रेरी से वे विधियाँ गायब नहीं हो जाती हैं, तब तक किसी भी समस्या से बचने के लिए जब तक आपके पास एक अच्छी आकस्मिक योजना है, तब तक विधियों का उपयोग करना बिल्कुल गलत नहीं है । जावा एपीआई के साथ यह कभी नहीं होता है, लेकिन केवल कुछ और के साथ इसका मतलब है कि इसे हटा दिया जाएगा। यदि आप विशेष रूप से अपग्रेड नहीं करने की योजना बनाते हैं ( हालाँकि आपको सबसे अधिक संभावना लंबे समय में होनी चाहिए ) आपके सॉफ़्टवेयर के सहायक पुस्तकालयों में तो उपयोग करने में कोई समस्या नहीं हैdeprecated तरीकों करने ।
  2. नहीं।

3

हां, यह गलत है।

जावा के भविष्य के संस्करणों में हटाए गए तरीकों या कक्षाओं को हटा दिया जाएगा और उनका उपयोग नहीं किया जाना चाहिए। प्रत्येक मामले में, एक विकल्प उपलब्ध होना चाहिए। उसका उपयोग करें।

ऐसे कुछ मामले हैं जब आपको किसी प्रोजेक्ट लक्ष्य को पूरा करने के लिए एक पदावनत वर्ग या विधि का उपयोग करना पड़ता है। इस मामले में, आपके पास इसका उपयोग करने के अलावा कोई विकल्प नहीं है। जावा के भविष्य के संस्करण उस कोड को तोड़ सकते हैं, लेकिन यदि यह एक आवश्यकता है तो आपको उसके साथ रहना होगा। यह शायद पहली बार नहीं है जब आपको किसी परियोजना की आवश्यकता को पूरा करने के लिए कुछ गलत करना पड़ा, और यह निश्चित रूप से अंतिम नहीं होगा।

जब आप जावा या किसी अन्य लाइब्रेरी के नए संस्करण में अपग्रेड करते हैं, तो कभी-कभी आपके द्वारा उपयोग किया जाने वाला एक तरीका या एक वर्ग खराब हो जाता है। पदावनत तरीकों का समर्थन नहीं किया जाता है, लेकिन अप्रत्याशित परिणाम नहीं आने चाहिए। इसका मतलब यह नहीं है कि वे, हालांकि, अपने कोड ASAP स्विच नहीं करेंगे।

पदावनति प्रक्रिया यह सुनिश्चित करने के लिए है कि लेखकों के पास पुराने एपीआई से नए एपीआई में अपना कोड बदलने के लिए पर्याप्त समय है। इस समय का सदुपयोग करें। ASAP पर अपना कोड बदलें।


2

यह गलत नहीं है, लेकिन सॉफ्टवेयर के भविष्य के संस्करणों में कुछ हटाए गए तरीकों को हटा दिया जाता है, इसलिए संभवतः आप काम नहीं करने वाले कोड के साथ समाप्त हो जाएंगे।


Removed? परिभाषा stackoverflow.com/questions/2941900/…
KMå

1
@KMan - आपके द्वारा पोस्ट किए गए लिंक में लिखा है - "अनिर्दिष्ट समय के लिए पिछड़े संगतता के लिए एपीआई को विधि में रखा गया है, और भविष्य में रिलीज हो सकता है।" मैंने एक ही लिखा है - कुछ हटाए गए तरीकों को संभवतः निकट या दूर भविष्य में हटा दिया जाता है।
पेटर मिनचेव

2

क्या जावा में डिप्रेस्ड तरीकों या कक्षाओं का उपयोग करना गलत है? "

इस तरह गलत नहीं है लेकिन यह आपको कुछ परेशानी से बचा सकता है। यहां एक उदाहरण है जहां पदावनत पद्धति का उपयोग करने के लिए इसे दृढ़ता से हतोत्साहित किया जाता है:

http://java.sun.com/j2se/1.4.2/docs/guide/misc/threadPrimitiveDeprecation.html

क्यों थ्रेड। स्टॉप को हटा दिया गया है?

क्योंकि यह स्वाभाविक रूप से असुरक्षित है। एक धागे को रोकने से यह सभी मॉनिटरों को अनलॉक करने का कारण बनता है जो इसे बंद कर दिया है। (मॉनिटर को अनलॉक किया जाता है, क्योंकि थ्रेडडाइट अपवाद स्टैक को प्रचारित करता है।) यदि इन मॉनीटर द्वारा पहले संरक्षित किसी भी वस्तु को असंगत स्थिति में रखा गया था, तो अन्य थ्रेड्स अब इन वस्तुओं को असंगत स्थिति में देख सकते हैं। ऐसी वस्तुओं को नुकसान बताया जाता है। जब धागे क्षतिग्रस्त वस्तुओं पर काम करते हैं, तो मनमाना व्यवहार हो सकता है। यह व्यवहार सूक्ष्म और पता लगाने में मुश्किल हो सकता है, या इसका उच्चारण किया जा सकता है। अन्य अनियंत्रित अपवादों के विपरीत, थ्रेडडॉट धागे को चुपचाप मारता है; इस प्रकार, उपयोगकर्ता को कोई चेतावनी नहीं है कि उसका कार्यक्रम दूषित हो सकता है। भविष्य में घंटों या दिनों के बाद भी वास्तविक नुकसान होने पर भ्रष्टाचार किसी भी समय प्रकट हो सकता है।


क्या होगा अगर कोई विधि नहीं बदलती है और मेरे पास मेरे चेतावनियों को चलाने के लिए है, तो क्या यह कोई प्रदर्शन समस्या पैदा करेगा।

प्रदर्शन के मामले में कोई समस्या नहीं होनी चाहिए। मानक एपीआई को कुछ पिछड़ी संगतता का सम्मान करने के लिए डिज़ाइन किया गया है ताकि अनुप्रयोगों को धीरे-धीरे जावा के नए संस्करणों के लिए अनुकूलित किया जा सके।


2

क्या जावा में डिप्रेस्ड तरीकों या कक्षाओं का उपयोग करना गलत है? यह "गलत" नहीं है, फिर भी काम कर रहा है लेकिन जितना संभव हो उतना इससे बचें।

मान लीजिए कि एक विधि के साथ सुरक्षा सुरक्षा भेद्यता है और डेवलपर्स यह निर्धारित करते हैं कि यह एक डिजाइन दोष है। इसलिए वे विधि को अपदस्थ करने और नए तरीके को पेश करने का निर्णय ले सकते हैं।

इसलिए यदि आप अभी भी पुरानी पद्धति का उपयोग करते हैं, तो आपको खतरा है। इसलिए पदावनति के कारण से अवगत रहें और जांचें कि यह आपके लिए कैसे प्रभावित करता है।

क्या होगा अगर किसी भी तरीके को न बदलें और मेरे आवेदन को चेतावनी के साथ चलाएं जो मेरे पास है, क्या यह कोई प्रदर्शन समस्या पैदा करेगा।

यदि प्रदर्शन समस्या के कारण अपव्यय होता है, तो आप एक प्रदर्शन समस्या से पीड़ित होंगे, अन्यथा ऐसी समस्या होने का कोई कारण नहीं है। फिर से इंगित करना चाहते हैं, पदावनत करने के कारण से अवगत होना।


2

जावा में यह @ डीपिकेटेड है, सी # में [अप्रचलित] है।

मुझे लगता है कि मुझे C # की शब्दावली पसंद है। इसका मतलब है कि यह अप्रचलित है। आप अभी भी इसका उपयोग कर सकते हैं यदि आप करना चाहते हैं, लेकिन शायद एक बेहतर तरीका है।

यह विंडोज 7 के बजाय विंडोज 3.1 का उपयोग करने जैसा है यदि आपको लगता है कि विंडोज 3.1 अप्रचलित है। आप अभी भी इसका उपयोग कर सकते हैं, लेकिन भविष्य के संस्करण में संभवतः बेहतर विशेषताएं हैं, साथ ही भविष्य के संस्करणों को संभवतः समर्थन दिया जाएगा - अप्रचलित एक नहीं होगा।

जावा के @Deprecated के लिए समान - आप अभी भी विधि का उपयोग कर सकते हैं, लेकिन अपने जोखिम पर - भविष्य में, इसके बेहतर विकल्प हो सकते हैं, और समर्थित भी नहीं हो सकते हैं।

यदि आप उस कोड का उपयोग कर रहे हैं जो कि पदावनत है, तो यह आमतौर पर ठीक है, जब तक कि आपको एक नए एपीआई में अपग्रेड न करना पड़े - तब तक पदावनत कोड मौजूद नहीं हो सकता है। मेरा सुझाव है कि यदि आप कुछ ऐसा देखते हैं जो नए विकल्प का उपयोग करने के लिए अपग्रेड किए गए कोड का उपयोग कर रहा है, तो (यह आमतौर पर एनोटेशन पर या जावदोक टिप्पणी में बताया गया है)।

संपादित करें: और जैसा कि माइकल द्वारा बताया गया है, अगर डेप्रिसिएशन का कारण कार्यक्षमता में दोष के कारण होता है (या क्योंकि कार्यक्षमता भी मौजूद नहीं होनी चाहिए), तो जाहिर है, किसी को पदावनत कोड का उपयोग नहीं करना चाहिए।


1
"यदि आप उस कोड का उपयोग कर रहे हैं जो पदावनत है, तो यह ठीक है, जब तक कि आपको एक नए एपीआई में अपग्रेड न करना पड़े" - बिल्कुल नहीं। देखें कि क्यों Thread.stop () को हटा दिया गया है, और आप देखेंगे कि यह किसी भी JRE संस्करण में ठीक नहीं है।
माइकल

ठीक है, मुझे बल्कि "आम तौर पर" ठीक (उस बिट को अपडेट करेगा) कहना चाहिए :) इसलिए, अपने जोखिम पर उपयोग करें। जाहिर है, अगर इसे कम करने का कारण इसकी कार्यक्षमता में एक दोष को रोकना है, तो इसका उपयोग नहीं करने के लिए समझ में आता है। सामान्य तौर पर, एक पदावनत विधि का उपयोग करना ठीक है। तो ja, यह सब deprecation के कारण पर निर्भर करता है। सच।
जेमीबारो

1

बिल्कुल नहीं - चूँकि पूरा Java @Deprecated :-) हो रहा है, आप बेझिझक उनका उपयोग तब तक कर सकते हैं, जब तक जावा रहता है। किसी भी तरह से कोई भी नोटिस नहीं जा रहा है, जब तक कि यह वास्तव में कुछ टूट गया हो। अर्थ - इसके बारे में पढ़ना है और फिर तय करना है।

हालाँकि .Net में, जब कुछ घोषित किया जाता है [अप्रचलित], इसके बारे में तुरंत पढ़ें और पढ़ें भले ही आपने इसे पहले कभी इस्तेमाल नहीं किया हो - आपके पास लगभग 50% संभावना है कि यह प्रतिस्थापन की तुलना में अधिक कुशल और / या उपयोग में आसान है)

तो सामान्य तौर पर, इन दिनों तकनीकी-रूढ़िवादी होना काफी फायदेमंद हो सकता है, लेकिन आपको पहले अपना रीडिंग कोर करना होगा।


1

मुझे लगता है कि पदावनत विधि का मतलब है; एक वैकल्पिक = ive विधि उपलब्ध है जो मौजूदा पद्धति की तुलना में सभी पहलुओं में बेहतर है। मौजूदा पुरानी पद्धति की तुलना में अच्छी विधि का उपयोग करना बेहतर है। पिछड़ी संगतता के लिए, पुराने तरीकों को पदावनत के रूप में छोड़ दिया जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.