Rumah  >  Artikel  >  hujung hadapan web  >  Pemfaktoran semula - Tukar Atribut kepada Set

Pemfaktoran semula - Tukar Atribut kepada Set

Barbara Streisand
Barbara Streisandasal
2024-10-20 11:33:02609semak imbas

Memihak kepada kebolehubahan dengan menukar atribut kepada set

TL;DR: Menggunakan set untuk atribut memudahkan kod anda dan memudahkan pengurusan negeri

Masalah Diatasi

  • Kebolehubahan
  • Kerumitan
  • Atribut menjadi tercemar
  • Penetap

Bau Kod Berkaitan

Langkah

  1. Kenal pasti atribut yang mewakili keadaan
  2. Ganti atribut dengan set: satu untuk setiap keadaan
  3. Laraskan kaedah untuk mengalihkan item antara set dan bukannya mengubah atribut

Kod Contoh

Sebelum ini

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

Selepas

// 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

taip

[X] Separa Automatik

Keselamatan

Pemfaktoran semula ini selamat apabila atribut anda tidak bergantung pada gelagat pengindeksan tertentu.

Memandangkan set tidak mengekalkan susunan elemen, semak sama ada logik anda bergantung pada susunan.

Mengapa kod itu lebih baik?

Entiti tidak boleh berubah pada dasarnya.

Menggunakan set memastikan keunikan dan memudahkan logik.

Anda tidak perlu lagi menyemak pendua sebelum menambah elemen.

Operasi seperti kesatuan, persimpangan dan perbezaan menjadi mudah, menjadikan kod anda lebih boleh diselenggara dan fleksibel.

Had

Set tidak mengekalkan susunan unsur.

Jika logik anda bergantung pada jujukan, menukar kepada set mungkin tidak sesuai dan anda harus menggunakan Koleksi Tertib atau Tatasusunan

Pemfaktoran Semula AI

Anda boleh menggesa pembantu AI anda untuk membuat pemfaktoran semula ini untuk anda.

Cuba Mereka!

Without Proper Instructions With Specific Instructions
ChatGPT ChatGPT
Claude Claude
Perplexity Perplexity
Copilot Copilot
Gemini Gemini

Tag

  • Kebolehubahan

Pemfaktoran Semula Berkaitan

https://dev.to/mcsee/refactoring-001-remove-setters-26cg

Lihat juga

Kredit

Imej oleh Angelo Giordano dalam Pixabay


Artikel ini adalah sebahagian daripada Siri Pemfaktoran Semula.

Atas ialah kandungan terperinci Pemfaktoran semula - Tukar Atribut kepada Set. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn