Exposer vos collections couple votre solution
TL;DR : utilisez des collections immuables pour éviter les effets secondaires involontaires.
L'alias se produit lorsque deux variables ou plus font référence au même objet.
Cela peut entraîner des effets secondaires inattendus, notamment lorsqu'une variable modifie l'objet partagé.
Vous ne pouvez pas modifier les collections immuables après la création, ce qui vous permet d'éviter les alias accidentels.
Les optimiseurs prématurés diront que copier des collections est une opération coûteuse que vous devriez éviter.
Il s'agit d'un cas particulier d'alias d'objet
public class MutableExample { public static void main(String[] args) { Listnumbers = List.of(1, 2, 3); List otherNumbers = numbers; // Aliasing otherNumbers.add(4); System.out.println(numbers); // Output: [1, 2, 3, 4] } }
public class ImmutableExample { public static void main(String[] args) { Listnumbers = List.of(1, 2, 3); List otherNumbers = List.copyOf(numbers); // Creating a copy otherNumbers.add(4); System.out.println(numbers); // Output: [1, 2, 3] } }
[X] Semi-automatique
Plusieurs outils d'analyse statique peuvent vous avertir en cas d'abus d'alias.
[x] Intermédiaire
Les générateurs de code IA ne créent pas toujours des objets immuables par défaut, en particulier lorsque vous travaillez avec des collections mutables.
Vous pouvez les inviter à donner la priorité aux collections immuables et à envelopper celles existantes pour éviter les alias.
Les outils d'IA peuvent analyser le code pour détecter d'éventuels problèmes d'alias et suggérer d'utiliser des collections immuables à la place.
Vous pouvez éviter les effets secondaires involontaires en utilisant des collections immuables.
Cela rendra votre code plus prévisible et plus facile à raisonner.
Code Smells are my opinion.
Photo by Martino Pietropoli on Unsplash
If an object is immutable, it can be in only one state, and you win big.
Joshua Bloch
This article is part of the CodeSmell Series.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!