Maison> Java> javaDidacticiel> le corps du texte

Odeur de code – Alias de collection

WBOY
Libérer: 2024-08-30 06:01:02
original
896 Les gens l'ont consulté

Exposer vos collections couple votre solution

TL;DR : utilisez des collections immuables pour éviter les effets secondaires involontaires.

Problèmes

  • Comportement imprévisible
  • Défis de débogage
  • Corruption des données
  • Violation du principe du moindre étonnement
  • Optimisation prématurée
  • Mutations inattendues
  • Problèmes de concurrence
  • Sécurité des fils compromise
  • Couplage accru

Solutions

  1. Utiliser des collections immuables
  2. Créer des classes immuables
  3. Copier la collection avant modification
  4. Évitez les getters de collecte
  5. Éviter les propriétés automatiques
  6. Favoriser le masquage et l'encapsulation des informations

Contexte

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

Exemple de code

Faux

public class MutableExample { public static void main(String[] args) { List numbers = List.of(1, 2, 3); List otherNumbers = numbers; // Aliasing otherNumbers.add(4); System.out.println(numbers); // Output: [1, 2, 3, 4] } }
Copier après la connexion

Droite

public class ImmutableExample { public static void main(String[] args) { List numbers = List.of(1, 2, 3); List otherNumbers = List.copyOf(numbers); // Creating a copy otherNumbers.add(4); System.out.println(numbers); // Output: [1, 2, 3] } }
Copier après la connexion

Détection

[X] Semi-automatique

Plusieurs outils d'analyse statique peuvent vous avertir en cas d'abus d'alias.

Balises

  • Immuabilité

Niveau

[x] Intermédiaire

Génération d'IA

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.

Détection IA

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.

Conclusion

Vous pouvez éviter les effets secondaires involontaires en utilisant des collections immuables.

Cela rendra votre code plus prévisible et plus facile à raisonner.

Rapports

Plus d'informations

Disclaimer

Code Smells are my opinion.

Credits

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!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!