پیدا کردن قسمت های بدبو کد شما: بوی کد 256 – گیرنده های قابل تغییر

استفاده از گیربکس مسئله مهمی است. افشای عناصر داخلی یک مشکل بزرگ است

TL;DR: درونیات خود را افشا نکنید و کنترل خود را از دست ندهید

چالش ها و مسائل

  • تغییرپذیری
  • تغییرات غیر منتظره
  • جلوه های ریپل
  • ناامنی نخ
  • نقض اصل کپسولاسیون

راه حل ها

  1. کپی های کم عمق مجموعه های خود را برگردانید

متن نوشته

اشیاء تغییرناپذیر در برنامه نویسی تابعی و شی گرا ضروری هستند.

پس از ایجاد، وضعیت آنها قابل تغییر نیست.

این کلید برای حفظ یکپارچگی شی و اطمینان از ایمنی نخ در برنامه های چند رشته ای است.

دریافت‌کننده‌های تغییرپذیر به تماس‌گیرندگان اجازه می‌دهند تا به وضعیت داخلی یک شی دسترسی داشته باشند و آن را تغییر دهند، که منجر به فساد احتمالی و رفتار غیرمنتظره می‌شود.

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

برگرداندن یک صفحه از یک کتاب مانند یک نسخه تغییرناپذیر است. نمی توان آن را ویرایش کرد، مانند یک خاطره انسانی.

می توانید برخی از خاطرات را با آوردن آنها از حافظه بلند مدت ویرایش کنید.

کد نمونه

اشتباه

public class Person {
    private List hobbies;

    public Person(List hobbies) {
        this.hobbies = hobbies;
    }

    public List getHobbies() {
        return hobbies;
    }
}

درست

public class Person {
    private List hobbies;

    public Person(List hobbies) {
        this.hobbies = new ArrayList(hobbies);
    }

    public List hobbies() {
      ...

Source link