Begünstigen Sie die Unveränderlichkeit, indem Sie Attribute in Mengen umwandeln
TL;DR: Die Verwendung von Sätzen für Attribute vereinfacht Ihren Code und erleichtert die Zustandsverwaltung
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<Bill>; paidBills: Set<Bill>; 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 instead of mutating attributes if (this.unpaidBills.has(bill)) { this.unpaidBills.delete(bill); this.paidBills.add(bill); } } } class Bill { amount: number; constructor(amount: number) { this.amount = amount; } } const bill = new Bill(100); const accountant = new Accountant(); accountant.addBill(bill); console.log(accountant.unpaidBills.has(bill)); // true accountant.payBill(bill); console.log(accountant.paidBills.has(bill)); // true
[X] Halbautomatisch
Dieses Refactoring ist sicher, wenn Ihre Attribute nicht auf einem bestimmten Indexierungsverhalten basieren.
Da Sets die Reihenfolge der Elemente nicht beibehalten, prüfen Sie, ob Ihre Logik von der Reihenfolge abhängt.
Entitäten sind ihrem Wesen nach unveränderlich.
Die Verwendung von Mengen gewährleistet Eindeutigkeit und vereinfacht die Logik.
Sie müssen nicht mehr nach Duplikaten suchen, bevor Sie Elemente hinzufügen.
Operationen wie Vereinigung, Schnittmenge und Differenz werden unkomplizierter, wodurch Ihr Code wartbarer und flexibler wird.
Sets behalten die Reihenfolge der Elemente nicht bei.
Wenn Ihre Logik von der Reihenfolge abhängt, ist die Konvertierung in eine Menge möglicherweise nicht geeignet und Sie sollten eine geordnete Sammlung oder ein geordnetes Array verwenden
Sie können Ihre KI-Assistenten auffordern, dieses Refactoring für Sie durchzuführen.
Without Proper Instructions | With Specific Instructions |
---|---|
ChatGPT | ChatGPT |
Claude | Claude |
Perplexity | Perplexity |
Copilot | Copilot |
Gemini | Gemini |
https://dev.to/mcsee/refactoring-001-remove-setters-26cg
Bild von Angelo Giordano in Pixabay
Dieser Artikel ist Teil der Refactoring-Reihe.
Das obige ist der detaillierte Inhalt vonRefactoring – Attribute in Mengen umwandeln. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!