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) { 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] 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.
Les odeurs de code sont mon opinion.
Photo de Martino Pietropoli sur Unsplash
Si un objet est immuable, il ne peut être que dans un seul état, et vous gagnez gros.
Josué Bloch
Cet article fait partie de la série CodeSmell.
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!