Rumah > Java > javaTutorial > teks badan

Bau Kod - Aliasing Koleksi

WBOY
Lepaskan: 2024-08-30 06:01:02
asal
1024 orang telah melayarinya

Mendedahkan koleksi anda menggandingkan penyelesaian anda

TL;DR: Gunakan koleksi tidak berubah untuk mengelakkan kesan sampingan yang tidak diingini.

Masalah

  • Tingkah laku yang tidak dapat diramalkan
  • Cabaran nyahpepijat
  • Rasuah data
  • Pelanggaran Prinsip Kurang Kehairanan
  • Pengoptimuman pramatang
  • Mutasi Tidak Dijangka
  • Masalah konkurensi
  • Keselamatan benang terjejas
  • Gandingan bertambah

Penyelesaian

  1. Gunakan koleksi tidak berubah
  2. Buat kelas tidak berubah
  3. Salin koleksi sebelum pengubahsuaian
  4. Elakkan mendapatkan kutipan
  5. Elakkan sifat automatik
  6. Pilih penyembunyian dan pengkapsulan maklumat

Konteks

Aliasing berlaku apabila dua atau lebih pembolehubah merujuk kepada objek yang sama.

Ini boleh membawa kepada kesan sampingan yang tidak dijangka, terutamanya apabila satu pembolehubah mengubah suai objek kongsi.

Anda tidak boleh menukar koleksi tidak boleh ubah selepas penciptaan membantu anda mengelakkan alias tidak disengajakan.

Pengoptimum pramatang akan berpendapat bahawa menyalin koleksi adalah operasi yang mahal yang harus anda elakkan.

Ini ialah kes khas Object Aliasing

Kod Contoh

salah

public class MutableExample {
  public static void main(String[] args) {
    List<Integer> numbers = List.of(1, 2, 3);
    List<Integer> otherNumbers = numbers; // Aliasing
    otherNumbers.add(4);
    System.out.println(numbers); // Output: [1, 2, 3, 4]
  }
}
Salin selepas log masuk

Betul

public class ImmutableExample {
  public static void main(String[] args) {
    List<Integer> numbers = List.of(1, 2, 3);
    List<Integer> otherNumbers = List.copyOf(numbers); // Creating a copy
    otherNumbers.add(4);
    System.out.println(numbers); // Output: [1, 2, 3]
  }
}
Salin selepas log masuk

Pengesanan

[X] Separa Automatik

Beberapa alat analisis statik boleh memberi amaran kepada anda tentang penyalahgunaan alias.

Tag

  • Ketidakbolehubah

Tahap

[x] Pertengahan

Penjanaan AI

Penjana kod AI mungkin tidak selalu mencipta objek tidak berubah secara lalai, terutamanya apabila bekerja dengan koleksi boleh ubah.

Anda boleh menggesa mereka untuk mengutamakan koleksi yang tidak berubah dan membungkus yang sedia ada untuk mengelakkan alias.

Pengesanan AI

Alat AI boleh menganalisis kod untuk isu penyalian yang berpotensi dan sebaliknya mencadangkan penggunaan koleksi tidak berubah.

Kesimpulan

Anda boleh mengelakkan kesan sampingan yang tidak diingini menggunakan koleksi yang tidak boleh diubah.

Ini akan menjadikan kod anda lebih mudah diramal dan lebih mudah untuk difikirkan.

perhubungan

Maklumat Lanjut

Penafian

Bau Kod adalah pendapat saya.

Kredit

Foto oleh Martino Pietropoli di Unsplash


Jika objek tidak berubah, objek itu boleh berada dalam satu keadaan sahaja dan anda menang besar.

Joshua Bloch


Artikel ini adalah sebahagian daripada Siri CodeSmell.

Atas ialah kandungan terperinci Bau Kod - Aliasing Koleksi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan