सबसे सही तरीकों का पालन करना

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

कीप के नियमों में अच्छे पैटर्न

डेटा को सुरक्षित रखने के लिए बनाए गए नियमों में सटीक जानकारी होनी चाहिए:

  • क्लास स्पेसिफ़िकेशन के लिए, हमेशा किसी खास क्लास, बेस क्लास या एनोटेट की गई क्लास के बारे में बताएं. अगर ऐसा करना मुमकिन न हो, तो यहां दिए गए उदाहरणों में दिखाए गए तरीके का इस्तेमाल करें:

    -keepclassmembers class com.example.MyClass {
      void someSpecificMethod();
    }
    
    -keepclassmembers ** extends com.example.MyBaseClass {
      void someSpecificMethod();
    }
    
    -keepclassmembers @com.example.MyAnnotation class ** {
      void someSpecificMethod();
    }
    
  • जब भी मुमकिन हो, सदस्य के बारे में जानकारी दें. साथ ही, क्लास के सिर्फ़ उन हिस्सों का रेफ़रंस दें जिन्हें ऐप्लिकेशन के काम करने के लिए रखना ज़रूरी है. हमारा सुझाव है कि जब तक बहुत ज़रूरी न हो, तब तक किसी नियम को पूरी क्लास पर लागू न करें. इसके लिए, सदस्य के स्कोप को { *; } के तौर पर तय करें.

    -keepclassmembers com.example.MyClass {
      void someSpecificMethod();
      void @com.example.MyAnnotation *;
    }
    

अगर इन दिशा-निर्देशों का पालन नहीं किया जा सकता, तो उस कोड को कुछ समय के लिए अलग किया जा सकता है जिसे किसी खास पैकेज में रखना है. इसके बाद, उस पैकेज पर 'सुरक्षित रखें' नियम लागू किया जा सकता है. हालांकि, यह समस्या का स्थायी समाधान नहीं है. ज़्यादा जानने के लिए, ऑप्टिमाइज़ेशन को धीरे-धीरे लागू करना लेख पढ़ें. किसी पैकेज के लिए निजी डेटा के रखरखाव के नियम का इस्तेमाल करने के लिए, निजी डेटा के रखरखाव के नियम को इस उदाहरण में दिखाए गए तरीके से तय करें:

-keepclassmembers class com.example.pkg.** { *; }

ऐसा करने से बचें

डेटा बनाए रखने के नियम के सिंटैक्स में कई विकल्प होते हैं. हालांकि, हम यह सुझाव देते हैं कि मेज़र की जा सकने वाली परफ़ॉर्मेंस के फ़ायदों के लिए, इनका इस्तेमाल न करें:

  • कीप नियमों में इनवर्ज़न ऑपरेटर ! का इस्तेमाल न करें. ऐसा इसलिए, क्योंकि इससे आपके ऐप्लिकेशन की लगभग हर क्लास पर अनजाने में कोई नियम लागू हो सकता है.
  • -keep class com.example.pkg.** { *; } जैसे पैकेज-वाइड कीप नियमों का लंबे समय तक इस्तेमाल न करें. इनका इस्तेमाल कुछ समय के लिए किया जा सकता है, ताकि R8 को कॉन्फ़िगर करते समय आने वाली समस्याओं को हल किया जा सके. ज़्यादा जानकारी के लिए, ऑप्टिमाइज़ेशन के स्कोप को सीमित करना लेख पढ़ें. आम तौर पर, वाइल्डकार्ड का इस्तेमाल करते समय सावधानी बरतें. पक्का करें कि आपने सिर्फ़ वह कोड रखा हो जिसकी आपको ज़रूरत है.

अगर इन नियमों का पालन नहीं किया जा सकता, तो हो सकता है कि आप बहुत ज़्यादा ओपन-एंडेड रिफ़्लेक्शन का इस्तेमाल कर रहे हों. ऐसे में, आपको रिफ़्लेक्शन का इस्तेमाल नहीं करना चाहिए या रिफ़्लेक्शन का इस्तेमाल करने वाली लाइब्रेरी का इस्तेमाल नहीं करना चाहिए. इसके लिए, Gson की केस स्टडी देखें.