با تبدیل ویژگی ها به مجموعه ها از تغییر ناپذیری حمایت کنید
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
مراحل
- مشخص کردن ویژگی هایی که حالت ها را نشان می دهند
- صفات را با مجموعه ها جایگزین کنید: یکی برای هر حالت
- روشها را برای جابهجایی آیتمها بین مجموعهها بهجای تغییر ویژگیها تنظیم کنید
کد نمونه
قبل از
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...