What difference, benefit and dangerous using each one?
In generale, questo anti-pattern è riferito a Primitive Obsession
. C'è un bel po 'di materiale buono disponibile online
C'è un carico cognitivo extra quando si ha a che fare con i primitivi; i primitivi hanno i loro invarianti, che di solito non si allineano con il tuo dominio. Ad esempio, i GUID sono lunghi 128 bit di dati, ma string
può essere più lungo o più corto di quello. Concatenare insieme a string
ha senso, ma non è un'operazione utile per GUID.
Che cosa significa prendere una sottostringa di un GUID?
Pubblicizzando che il sottostante nella rappresentazione della memoria dei dati è un string
, offri ai tuoi consumatori l'opportunità di accoppiare il loro codice quella decisione, che aggiunge attrito se vuoi cambiarlo più tardi.
In altre parole, la decisione di utilizzare un string
come rappresentazione in memoria di un identificatore è quella che può essere catturati in un modulo , riducendo il costo di cambiarlo in seguito.
Ci sono casi in cui il livello extra di riferimento indiretto è un problema; si presenta nella programmazione grafica e simili, dove la manipolazione delle strutture dati sottostanti è il punto, e la necessità di un ulteriore reindirizzamento all'interno del ciclo interno è la morte e le prestazioni. Se hai bisogno di eseguire operazioni collettive su un miliardo di identificatori, potresti voler accedere ai byte non elaborati, piuttosto che una perfetta "astrazione del dominio".