Come ridurre l'uso di Magic Strings?

3

Nel database dell'applicazione c'è una tabella di configurazione con questo schema:

Tabella: ReleaseProperty

  1. ReleasePropertyID
  2. ReleaseID
  3. Nome
  4. Valore

Attualmente per recuperare una proprietà specifica, passo alla classe Repository gli argomenti ReleaseID (che provengono dall'indirizzo corrente della pagina web) e un Nome, che è fondamentalmente codificato con hard disk

per es.

var property = ReleasePropertyRepository.Select(ReleaseID, "MyProperty");

Non mi piace usare stringhe codificate nel codice, e l'unica idea per migliorare la qualità di questo codice è usare una classe contenitore per le costanti.

var property = ReleasePropertyRepository.Select(ReleaseID, Constants.MyProperty);

C'è un altro modo per sviluppare un codice migliore?

    
posta simoneL 21.07.2014 - 17:05
fonte

1 risposta

5

Le stringhe con hardcoded non sono un problema. Lasciali stare.

Ciò che dovrebbe avere è tuttavia funzioni che avvolgono le query in modo che ciascuno degli identificatori venga utilizzato solo una volta nel codice.

Se hai più di un posto dove hai bisogno delle stringhe, creare delle costanti per esse ha senso, perché il compilatore si assicurerà che siano coerenti. Ma se hai un posto nel codice e un posto nel database, il compilatore non controllerà nulla se fai costanti, quindi l'unica cosa che le costanti ti daranno sono più linee di codice, (probabilmente) fonte extra dove le costanti vivrà e più posti da cambiare ogni volta che le costanti devono cambiare (perché si desidera modificare il valore e il nome della costante ogni volta, in questo caso è necessario conoscere la stringa effettiva, in modo che il nome simbolico e il testo divergano renderebbe le cose peggiori). E ti vinceranno esattamente nulla, perché il controllo del database (o della configurazione o qualsiasi altra cosa) avverrà solo nei test e / o in fase di runtime.

Il solito consiglio contro i valori codificati riguarda i valori in cui il significato del valore non è evidente dal valore e può essere reso ovvio introducendo una costante o costanti simboliche che appaiono in più punti dove devono essere mantenute coerenti. Il significato delle chiavi nella configurazione o nella tabella delle proprietà è ovvio dal valore e di solito non appare in molti punti, quindi il consiglio non si applica.

Oppure, in modo più sintetico, se si ha un nome più descrittivo per il valore o se si può scrivere strongmente il valore attuale, creare una costante simbolica. Se il nome simbolico deriverebbe dal valore, non farlo.

... sembra che tu abbia il caso successivo.

    
risposta data 21.07.2014 - 17:23
fonte

Leggi altre domande sui tag