پاسخ این است که انواع غیرقابل تغییر در برابر اشکالات ایمنتر، درک آسانتر و آمادهتر برای تغییر هستند. تغییرپذیری درک آنچه برنامه شما انجام می دهد را دشوارتر می کند، و اجرای قراردادها را بسیار سخت تر می کند.
آیا اشیاء قابل تغییر بد هستند؟
در نهایت، اشیاء قابل تغییر قاتل در موقعیتهای همزمان هستند. هر زمان که به یک شیء قابل تغییر از رشته های جداگانه دسترسی پیدا می کنید، باید با قفل شدن مقابله کنید. این کار توان عملیاتی را کاهش می دهد و نگهداری کد شما را به طرز چشمگیری دشوارتر می کند.
چرا حالت اشتراکی بد است؟
وضعیت تغییرپذیر مشترک به شرح زیر عمل می کند: اگر دو یا چند طرف بتوانند داده های یکسانی (متغیرها، اشیاء و غیره) را تغییر دهند. و اگر طول عمر آنها همپوشانی داشته باشد. سپس این خطر وجود دارد که تغییرات یکی از طرفین مانع از عملکرد صحیح سایر طرف ها شود.
چرا تغییر ناپذیری چیز خوبی است؟
علاوه بر کاهش استفاده از حافظه، تغییر ناپذیری به شما امکان می دهد برنامه خود را با استفاده از برابری مرجع و مقدار بهینه کنید. این باعث میشود که به راحتی متوجه شوید که آیا چیزی تغییر کرده است یا خیر. به عنوان مثال تغییر حالت در مولفه react.
معایب تغییرناپذیری چیست؟
تنها عیب واقعی کلاسهای تغییرناپذیر است که برای هر مقدار مجزا به یک شی جداگانه نیاز دارند. ایجاد این اشیا می تواند پرهزینه باشد، به خصوص اگر بزرگ باشند. به عنوان مثال، فرض کنید که یک BigInteger یک میلیون بیتی دارید و می خواهید بیت مرتبه پایین آن را تغییر دهید:BigInteger moby=…; moby=moby.