Mendedahkan koleksi anda menggandingkan penyelesaian anda
TL;DR: Gunakan koleksi tidak berubah untuk mengelakkan kesan sampingan yang tidak diingini.
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
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] } }
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] } }
[X] Separa Automatik
Beberapa alat analisis statik boleh memberi amaran kepada anda tentang penyalahgunaan alias.
[x] Pertengahan
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.
Alat AI boleh menganalisis kod untuk isu penyalian yang berpotensi dan sebaliknya mencadangkan penggunaan koleksi tidak berubah.
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.
Bau Kod adalah pendapat saya.
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!