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 😃
- Salelá biloko oyo ekoki kobongwana te lokola bafungola.
- Bolongola equals/hashCode malamu.
- Salelá bisika ya nsuka (Soki monɔkɔ na yo epesi nzela) .
- 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 |
---|---|
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.