paint-brush
Kobongola Bafungola, Kobungisa Mituyapene@mcsee
544 botángi
544 botángi

Kobongola Bafungola, Kobungisa Mituya

pene Maximiliano Contieri4m2025/02/24
Read on Terminal Reader

Molai mingi; Mpo na kotánga

Tango osalelaka ba objets mutables lokola ba clés na ba collections hashed, ko changer yango ebukaka ba contrats.
featured image - Kobongola Bafungola, Kobungisa Mituya
Maximiliano Contieri HackerNoon profile picture
0-item


Kobongola Bafungola, Kobungisa Mituya


TL;DR: Tango osalelaka ba objets mutables lokola ba clés na ba collections hashed, ko changer yango ebukaka ba contrats.

Mikakatano 😔

  • Mituya oyo ebungaki
  • Débogage ya makasi
  • Kobuka mobeko ya etinda oyo ekamwisaka mingi te
  • Bizaleli oyo ekanisamaki te

Ba solutions 😃

  1. Salelá biloko oyo ekoki kobongwana te lokola bafungola.
  2. Bolongola equals/hashCode malamu.
  3. Salelá bisika ya nsuka (Soki monɔkɔ na yo epesi nzela) .
  4. Rehash après mutation (Oyo ezali solution ya sur-ingénierie)

Contexte 💬

Ntango osaleli biloko oyo ekoki kobongwana lokola bafungola na ba collections hashed , kobongola yango fungola nsima ya kobakisa objec oyo etali yango ekoki kosala ete ezwama te.


Yango esalemaka mpo code ya hash ebongwanaka mpe collection ekoki kozwa objet na seau correct te.

Ndakisa ya Code 📖

Mabe ❌

 class MutableKey { int id; MutableKey(int newId) { this.id = newId; } @Override public int hashCode() { return this.id; } @Override public boolean equals(Object objectToCompare) { if (this == objectToCompare) return true; MutableKey that = (MutableKey) objectToCompare; return id == that.id; } } MutableKey key = new MutableKey(42); Map<MutableKey, String> map = new HashMap<>(); map.put(key, "Yes Album"); // The key mutates key.id = 90125; // Now you cannont retrieve the album System.out.println(map.get(key)); // Output: null

Droit 👉

 class ImmutableKey { private final int id; ImmutableKey(int newId) { this.id = newId; } @Override public int hashCode() { return this.id; } @Override public boolean equals(Object objectToCompare) { if (this == objectToCompare) return true; ImmutableKey that = (ImmutableKey) objectToCompare; return id == that.id; } } ImmutableKey key = new ImmutableKey(42); Map<ImmutableKey, String> map = new HashMap<>(); map.put(key, "Yes Album"); System.out.println(map.get(key)); // Output: Yes Album

Détection 🔍

  • Semi-Automatique oyo ezali


Okoki koyeba nsolo oyo na kotalaka soki osaleli biloko oyo ekoki kobongwana lokola bafungola na ba collections basées na hash.


Ba outils automatisés lokola ba linters to ba inspections IDE ekoki pe ko drapeau ba clés mutables.

Tags 🏷️

  • Bobongwani ya biloko

Niveau 🔋

  • Ya katikati

Pourquoi Bijection Eza Important 🗺️

Bijection entre monde réel na programme na yo ezali important po ezo assurer que ba objets na yo e lakisa na exactitude ba relation oyo esengelaki e représenter.


Na mokili ya solo, bafungola mbala mingi ekoki kobongwana te (ndakisa, ba ID, bankombo).


Tango ozali ko modeler ba clés wana lokola ba objets mutables, obukaka correspondance moko na moko entre monde réel na programme na yo na MAPPER .


Tango obuki bijection oyo na kosalelaka ba touches mutables, osali inconsistent ya carte ememaka na ba échecs ya récupération mpe comportement imprévu.

Génération ya AI 🤖

Ba générateurs ya AI ekoki ko créer odeur oyo soki ba générer ba objets mutables comme ba clés sans ko considérer ba implications.


Yango esalemaka mingi te mpo ete ba générateurs ya AI enyokwamaka na obsession primitive .

Détection ya AI 🥃

Ba générateurs ya AI ekoki ko détecter odeur oyo na ba instructions ya ko analyser usage ya ba objets mutables na ba collections basées na hash pe ko drapeau ba problèmes potentiels.


Okoki kopesa mitindo na AI koluka ba classes oyo ezangi ba champs ya suka to ba méthodes oyo e modifier état ya objet sima ya création.

Meka Bango! 🛠

Kobosana te: Ba Assistants ya AI basalaka mabunga mingi

Kozanga Malako ya Mabongi

Na Malako ya sikisiki

ChatGPT ya kosolola

ChatGPT ya kosolola

Claude

Claude

Kobulunganisa bato

Kobulunganisa bato

Mokopi ya pilote

Mokopi ya pilote

Ba Géminis

Ba Géminis

Boluka na mozindo

Boluka na mozindo

AI ya méta

AI ya méta

Bosukisi 🏁

Tango ozali kosalela ba objets mutables lokola ba clés, ozali na risque ya kobuka contrat entre état ya clé na code hash.


Salelá biloko oyo ekoki kobongwana te mpo na koboya likambo yango.

Boyokani 👩 ❤️ 💋 👨

https://hackernoon.com/ndenge-ndenge-kozwa-biteni-ya-ko-nsolo-ya-kode-na-yo-eteni-xxxiv

https://hackernoon.com/ndenge-ndenge-kozwa-biteni-ya-ko-kode-na-yo-ya-nsolo-eloko-xxv

https://hackernoon.com/ndenge-ndenge-kozwa-biteni-ya-kosembo-ya-kode-na-yo-eteni-xxiv

https://hackernoon.com/ndenge-nzela-kozwa-biteni-ya-kosembo-ya-kode-na-yo-eteni-xxxvi

https://hackernoon.com/ndenge-ndenge-kozwa-biteni-ya-ko-kode-na-yo-ya-kosembo-eteni-xviii

https://hackernoon.com/ndenge-nzela-kozwa-biteni-ya-kode-nsolo-ya-kode-na-yo-eteni-xxvi

https://hackernoon.com/ndenge-nzela-kozwa-biteni-ya-ko-nsolo-ya-kode-na-yo-ete-xlii

Basango Lisusu 📕

Bozangi mokumba 📘

Code Smells ezali makanisi na ngai .

Ba crédits 🙏

Fɔtɔ́ ya Kathyryn Tripp na Unsplash


Propriété ya motuya mingi ya programme ezali soki ekokisaka intention ya usager na yango.


MOTUKA Hoare



Lisolo oyo ezali na kati ya Série CodeSmell.


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

KOKANGA BA ÉTIQUES

ARTICLE OYO EZALAKI PRESENTE NA...