بهترین شیوه ها را دنبال کنید

در حین کار با قوانین حفظ کردن، مهم است که به مقدار مناسبی از ویژگی‌ها دست یابید تا مطمئن شوید که در عین حفظ رفتار برنامه، مزایایی را مشاهده می‌کنید. برای آشنایی با الگوهای خوب و همچنین مواردی که در رعایت قوانین باید از آنها اجتناب کنید، بخش‌های زیر را ببینید.

الگوهای خوب در حفظ قوانین

قوانین حفظ به خوبی تعریف شده تا حد امکان خاص هستند:

  • برای مشخصات کلاس، همیشه یک کلاس خاص، کلاس پایه یا کلاس مشروح شده را در صورت امکان، همانطور که در مثال های زیر نشان داده شده است، مشخص کنید:

    -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 *;
    }
    

اگر نمی توانید به این دستورالعمل ها پایبند باشید، می توانید به طور موقت کدی را که باید در یک بسته اختصاصی نگهداری شود جدا کنید و قانون نگه داشتن خود را روی بسته اعمال کنید. با این حال، این یک راه حل برای دراز مدت نیست. برای کسب اطلاعات بیشتر، به پذیرش بهینه سازی تدریجی مراجعه کنید. برای استفاده از یک قانون keep برای یک بسته، یک قانون keep را همانطور که در مثال زیر نشان داده شده است تعریف کنید:

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

چیزهایی که باید اجتناب کرد

دستور نگه داشتن گزینه های زیادی دارد، اما برای مزایای عملکرد پایدار قابل اندازه گیری، توصیه می کنیم از موارد زیر استفاده نکنید:

  • از استفاده از عملگر وارونگی خودداری کنید ! قوانین را حفظ کنید زیرا می‌توانید ناخواسته یک قانون را تقریباً برای هر کلاس در برنامه خود اعمال کنید.
  • از قوانین نگه داشتن بسته گسترده مانند -keep class com.example.pkg.** { *; } بلند مدت آنها می توانند به طور موقت برای حل مشکلات هنگام پیکربندی R8 استفاده شوند. برای اطلاعات بیشتر، محدود کردن دامنه بهینه‌سازی را ببینید. به طور کلی، در مورد حروف عام مراقب باشید - مطمئن شوید که فقط کد مورد نیاز خود را نگه می دارید.

اگر نمی‌توانید از این قوانین پیروی کنید، ممکن است از بازتاب زیادی استفاده کنید، و باید از بازتاب اجتناب کنید یا از کتابخانه با استفاده از بازتاب اجتناب کنید (به مطالعه موردی Gson مراجعه کنید).