Refactoring 017 – تبدیل ویژگی ها به مجموعه ها

با تبدیل ویژگی ها به مجموعه ها از تغییر ناپذیری حمایت کنید

TL;DR: استفاده از مجموعه‌ها برای ویژگی‌ها کد شما را ساده می‌کند و مدیریت حالت را آسان‌تر می‌کند

مشکلات پرداخته شده است

  • تغییرپذیری
  • پیچیدگی
  • صفات آلوده می شوند
  • تنظیم کننده ها

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-vii-8dk31x0

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-vi-cmj31om

مراحل

  1. مشخص کردن ویژگی هایی که حالت ها را نشان می دهند
  2. صفات را با مجموعه ها جایگزین کنید: یکی برای هر حالت
  3. روش‌ها را برای جابه‌جایی آیتم‌ها بین مجموعه‌ها به‌جای تغییر ویژگی‌ها تنظیم کنید

کد نمونه

قبل از

class Bill {
  amount: number;
  paid: boolean;

  constructor(amount: number) {
    this.amount = amount;
    this.paid = false;
  }

  pay() {
    if (!this.paid) {
      this.paid = true;
    }
  }
}

const bill = new Bill(100);
console.log(bill.paid); // false
bill.pay();
console.log(bill.paid); // true

بعد از

// 1. Identify attributes representing states

class Accountant {  
   // 2. Replace the attributes with sets: one for each state
  unpaidBills: Set;
  paidBills: Set;

  constructor() {
    this.unpaidBills = new Set();
    this.paidBills = new Set();
  }

  addBill(bill: Bill) {
    this.unpaidBills.add(bill);
  }

  payBill(bill: Bill) {    
    // 3. Adjust methods to move items
    // between sets...

Source link