Heim  >  Artikel  >  Java  >  Code Smell – Aliasing der Sammlung

Code Smell – Aliasing der Sammlung

WBOY
WBOYOriginal
2024-08-30 06:01:02987Durchsuche

Das Offenlegen Ihrer Sammlungen ist Ihre Lösung

TL;DR: Verwenden Sie unveränderliche Sammlungen, um unbeabsichtigte Nebenwirkungen zu verhindern.

Probleme

  • Unvorhersehbares Verhalten
  • Debugging-Herausforderungen
  • Datenbeschädigung
  • Verstoß gegen den Grundsatz des geringsten Erstaunens
  • Vorzeitige Optimierung
  • Unerwartete Mutationen
  • Parallelitätsprobleme
  • Thread-Sicherheit beeinträchtigt
  • Erhöhte Kopplung

Lösungen

  1. Verwenden Sie unveränderliche Sammlungen
  2. Erstellen Sie unveränderliche Klassen
  3. Kopieren Sie die Sammlung vor der Änderung
  4. Vermeiden Sie Sammler
  5. Vermeiden Sie automatische Eigenschaften
  6. Bevorzugen Sie das Verstecken und Kapseln von Informationen

Kontext

Aliasing tritt auf, wenn zwei oder mehr Variablen auf dasselbe Objekt verweisen.

Dies kann zu unerwarteten Nebenwirkungen führen, insbesondere wenn eine Variable das gemeinsam genutzte Objekt ändert.

Sie können unveränderliche Sammlungen nach der Erstellung nicht mehr ändern, um versehentliches Aliasing zu verhindern.

Vorzeitige Optimierer werden argumentieren, dass das Kopieren von Sammlungen ein teurer Vorgang ist, den Sie vermeiden sollten.

Dies ist ein Sonderfall von Object Aliasing

Beispielcode

Falsch

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]
  }
}

Rechts

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]
  }
}

Erkennung

[X] Halbautomatisch

Mehrere statische Analysetools können Sie vor Aliasing-Missbrauch warnen.

Schlagworte

  • Unveränderlichkeit

Ebene

[x] Mittelstufe

KI-Generierung

KI-Codegeneratoren erstellen möglicherweise nicht immer standardmäßig unveränderliche Objekte, insbesondere wenn sie mit veränderlichen Sammlungen arbeiten.

Sie können sie auffordern, unveränderliche Sammlungen zu priorisieren und vorhandene einzuschließen, um Aliasing zu vermeiden.

KI-Erkennung

KI-Tools können Code auf potenzielle Aliasing-Probleme analysieren und stattdessen die Verwendung unveränderlicher Sammlungen vorschlagen.

Abschluss

Sie können unbeabsichtigte Nebenwirkungen vermeiden, indem Sie unveränderliche Sammlungen verwenden.

Dadurch wird Ihr Code vorhersehbarer und leichter nachvollziehbar.

Beziehungen

Weitere Informationen

Haftungsausschluss

Code Smells sind meine Meinung.

Credits

Foto von Martino Pietropoli auf Unsplash


Wenn ein Objekt unveränderlich ist, kann es sich nur in einem Zustand befinden, und Sie haben einen großen Gewinn.

Joshua Bloch


Dieser Artikel ist Teil der CodeSmell-Reihe.

Das obige ist der detaillierte Inhalt vonCode Smell – Aliasing der Sammlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn