जावा में कब डिलीट करना है और कब डिलीट करना है


11

एक रिफैक्टिंग प्रयास या सिर्फ चल रहे विकास के हिस्से के रूप में, एक विशेष विधि या शायद एक संपूर्ण वर्ग कुछ अर्थों में अप्रचलित हो सकता है। जावा @Deprecatedएनोटेशन का समर्थन करता है यह इंगित करने के लिए कि प्रश्न में कार्यक्षमता को संभालने का एक बेहतर तरीका है। मुझे लगता है कि यह सार्वजनिक एपीआई में विशेष रूप से उपयोगी है जहां एक एपीआई के कुछ हिस्सों को हटाने के प्रभावों को नहीं जाना जा सकता है। एक गैर-सार्वजनिक एपीआई और एक परियोजना के लिए जो संशोधन नियंत्रण प्रणालियों का उपयोग करता है (इसलिए हटाना कुछ अर्थों में पूर्ववत किया जा सकता है), जब अप्रचलित तत्व (एस) को हटाने के बजाय अपदस्थ करना उचित है?

जवाबों:


18

क्या आपका एपीआई एक सार्वजनिक सामना करने वाला एपीआई है? यह तय करता है कि आपको पदावनत करना चाहिए या नहीं। यदि एपीआई आपके लाभ के लिए कड़ाई से है (यानी केवल आपकी कंपनी के भीतर उपयोग किया जाता है), तो यह केवल अपमानजनक कोड को हटाने के लिए सबसे अच्छा है। यह बहुत साफ है और लंबे समय में कम रखरखाव सिरदर्द का कारण होगा।

हालाँकि, यदि API सार्वजनिक है तो बस एक विधि को हटाने से कोड का कारण बन सकता है जो आपके पुस्तकालय के पुराने संस्करणों के साथ काम करना बंद कर देता है। यहीं से चीजें गड़बड़ हो जाती हैं। निम्नलिखित कुछ दिशानिर्देश हैं:

  • आंतरिक API: हटाए जाने के बजाय हटा दें। यदि कोई क्लाइंट आंतरिक वर्ग या विधि का उपयोग कर रहा है, तो उपकरण के टूटने पर यह उनकी गलती है।
  • बाहरी API: पहले हटाएं, बाद में निकालें। पदावनति एक झंडा है जिसे बाद में हटा दिया जाएगा। बाद में इस बात पर निर्भर करता है कि आपका क्या मानना ​​उचित है। वास्तव में पदावनत कोड को हटाने से पहले बहुत कम से कम 2-3 संस्करण दें।

6

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

यह पर्याप्त समय करें और आप अपनी परियोजनाओं में एक वर्ग या विधि से छुटकारा पाने में कितना समय लेते हैं, यह महसूस करेंगे।


1
+1 लेकिन आपके कैलेंडर के बजाय, शायद टीम तकनीकी ऋण पुनर्भुगतान कैलेंडर अधिक उपयुक्त होगा?
गैरी रोवे

5

IMHO यदि आप यह सुनिश्चित कर सकते हैं कि कोई भी इसका उपयोग नहीं कर रहा है और कभी नहीं करेगा, बस इसे हटा दें। (यह प्रतिबिंब की उपस्थिति में मुश्किल हो सकता है, या बाहरी घटक जैसे वेग मैक्रोज़ - आधुनिक आईडीई जैसे इंटेलीजे जेएसपी में संदर्भ पा सकते हैं लेकिन प्रतिबिंब के माध्यम से या वेग में नहीं।)

यदि कोई बेहतर विकल्प है, लेकिन पुराने को अभी भी बहुत सारे स्थानों पर उपयोग किया जाता है, और आपके पास वर्तमान में सभी क्लाइंट कोड को रिफलेक्टर करने का समय नहीं है, तो यह अप्रचलित वर्ग / विधि के बारे में पर्याप्त है (पर्याप्त टिप्पणी के साथ) पसंदीदा विकल्प)।

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