افشای مجموعه های خود راه حل شما را زوج می کند
TL;DR: از مجموعه های تغییرناپذیر برای جلوگیری از عوارض جانبی ناخواسته استفاده کنید.
مشکلات
- رفتار غیر قابل پیش بینی
- چالش های اشکال زدایی
- فساد داده ها
- نقض اصل کمترین حیرت
- بهینه سازی زودرس
- جهش های غیر منتظره
- مشکلات همزمانی
- ایمنی نخ به خطر افتاده است
- افزایش کوپلینگ
راه حل ها
- از مجموعه های تغییرناپذیر استفاده کنید
- ایجاد کلاس های تغییرناپذیر
- قبل از اصلاح مجموعه را کپی کنید
- از جمع آوری کننده ها اجتناب کنید
- از خواص خودکار اجتناب کنید
- از پنهان کردن و کپسوله کردن اطلاعات حمایت کنید
زمینه
نام مستعار زمانی اتفاق می افتد که دو یا چند متغیر به یک شی ارجاع دهند.
این می تواند منجر به عوارض جانبی غیرمنتظره شود، به خصوص زمانی که یک متغیر شی مشترک را تغییر می دهد.
نمیتوانید مجموعههای تغییرناپذیر را پس از ایجاد تغییر دهید و به شما کمک میکند از همخوانی تصادفی جلوگیری کنید.
بهینه سازهای نابهنگام استدلال خواهند کرد که کپی کردن مجموعه ها عملیات گران قیمتی است که باید از آن اجتناب کنید.
این یک مورد خاص از Object Aliasing است
کد نمونه
اشتباه است
public class MutableExample {
public static void main(String[] args) {
List numbers = List.of(1, 2, 3);
List otherNumbers = numbers; // Aliasing
otherNumbers.add(4);
System.out.println(numbers); // Output: [1, 2, 3, 4]
}
}
درسته
public class ImmutableExample {
public static void...