Devo usare una libreria di unità fisiche per modellare le proprietà del dominio se non devo eseguire calcoli su di esse?

3

Sto lavorando al modello di dati di un servizio che descrive case e appartamenti. Ciò comporta la memorizzazione di proprietà fisiche quantitative di alcune funzionalità dei locali, ad esempio:

  • Velocità della connessione Internet in Mbps
  • Lunghezza di una piscina in metri
  • Livello di rumore degli elettrodomestici da cucina in dB

Le quantità saranno sempre specificate e memorizzate in termini delle stesse unità e non ci sarà bisogno di eseguire calcoli su di esse. L'operazione più complessa sarà confrontando e ordinando i valori della stessa unità.

La mia domanda è: mi consiglieresti di usare una libreria di unità fisiche appropriata per archiviare queste quantità, o è valido decidere che non voglio dipendere da una libreria di terze parti solo per la memorizzazione di alcuni numeri se non eseguirà aritmetica su di loro, e so che vengono sempre specificati usando le stesse unità?

    
posta H2CO3 17.03.2018 - 20:28
fonte

3 risposte

3

Di solito, il motivo per supportare più unità di misura (oltre a misurare le cose) è supportare localizzazione o conversioni tra sistemi (ad esempio miglia a chilometri).

Le conversioni da una unità all'altra sono ampiamente conosciute. Direi anche che è più una questione di localizzazione che altro. Vivo negli Stati Uniti, quindi la mia consapevolezza spaziale riguarda principalmente pollici, piedi e miglia. Qualcuno dal Canada (o praticamente da qualsiasi altra parte sul pianeta Terra) ha probabilmente più familiarità con il sistema metrico.

Quindi, decidere su quale memorizzare. Hai optato per il sistema metrico. Quindi se hai bisogno di localizzare questo sistema, converti metri (o metri) in piedi.

  1. Leggi dal DB
  2. Converti
  3. Mostra

Segue lo stesso schema delle date e dei tempi, francamente. Affrontare le diverse unità di misura nel database non avvantaggia l'applicazione, dal momento che le conversioni sono facili se è necessario supportare altri sistemi di misurazione in futuro.

Poiché un refactoring possibile in futuro potrebbe localizzare i sistemi di misurazione, per il momento è buona norma aver progettato il sistema con i valori di memorizzazione in un sistema di misurazione.

Il motivo per cui non hai ancora bisogno di una libreria non è KISS, o YAGNI --- è perché il costo del refactoring per supportare altri sistemi è solo un'altra forma di localizzazione che può essere gestita nello strato UI di l'applicazione. Non dovrebbe essere necessario un ampio lavoro di refactoring di gutt-and-rewrite.

    
risposta data 18.03.2018 - 17:50
fonte
1

Basta distillare la domanda fino alla sua essenza:

Should I use a library for something I don't need.

La risposta è ovviamente no.

    
risposta data 18.03.2018 - 03:35
fonte
0

Come punto di vista alternativo, senza la libreria, un'etichetta potrebbe avere una firma come questa:

String dimensionsLabel(int height, int width); 

Se questa firma ti piace, potrebbe essere meno utile utilizzare una libreria piuttosto che eseguire il rollover dei tuoi tipi:

String dimensionsLabel(Meter height, Meter width); 
    
risposta data 19.03.2018 - 23:40
fonte