Nome per conservare più copie di una variabile

1

Esiste una cattiva pratica nell'ingegneria del software in cui un singolo dato è detenuto in base al valore in più punti.

Ad esempio, in un FPS, la posizione del giocatore potrebbe essere detenuta dalla classe AI, dalla classe di input, dalla classe principale e dal motore grafico.

Possono sorgere diversi problemi:

  1. Problemi di sincronizzazione
  2. Maggiore complessità del codice per bloccare le variabili fino a quando tutte le classi sono state aggiornate
  3. Maggiore complessità del codice per fornire setter su tutte le classi
  4. Diventa molto più difficile se ci sono più punti di input per assicurarti che ogni input e output sia aggiornato ogni volta che cambia il codice

Ovviamente, la migliore pratica sarebbe quella di avere una singola classe che contenesse tutte le informazioni sul giocatore e che verrebbe referenziata, non esclusa, dall'altra classe.

Voglio parlare di questa cattiva pratica, e sono abbastanza sicuro che abbia un nome, ma non riesco a trovare nulla. Ho sentito usare i termini "duplicazione dati" e "mirroring dati", ma non sono sicuro che siano corretti. Qualcuno può chiamare questo termine?

    
posta Jonathan Mee 29.04.2016 - 15:27
fonte

2 risposte

4

Il principio che stai difendendo è quello di una "singola fonte di verità".

L'antipattern corrispondente non ha un nome così generico. Violating DRY ("non ripetere te stesso") è talvolta chiamato WET ("scrivi tutto due volte"). Nei database, la violazione della forma normale è chiamata denormalizzazione (ed è talvolta una buona pratica quando si fa trading fuori tempo rispetto allo spazio). Ma non esiste una frase fissa come "Molteplici fonti di verità" che i praticanti riconosceranno immediatamente come il nome di un anti-modello.

    
risposta data 29.04.2016 - 15:31
fonte
2

unica fonte di verità

In information systems design and theory single source of truth (SSOT), also known as single point of truth (SPOT) refers to the practice of structuring information models and associated schemata such that every data element is stored exactly once (e.g., in no more than a single row of a single table). Any possible linkages to this data element (possibly in other areas of the relational schema or even in distant federated databases) are by reference only.

Because all other locations of the data just refer back to the primary "source of truth" location, updates to the data element in the primary location propagate to the entire system without the possibility of a duplicate value somewhere being forgotten.

    
risposta data 29.04.2016 - 15:33
fonte

Leggi altre domande sui tag