Ho un'applicazione che deve accettare e produrre valori sia in unità personalizzate che in sistemi metrici.
In questo momento la conversione e l'input e l'output sono un disastro. Puoi entrare solo nel sistema statunitense, ma puoi scegliere l'output come USA o Metrico e il codice per eseguire le conversioni è ovunque.
Quindi voglio organizzare questo e mettere insieme alcune semplici regole. Così mi è venuto in mente questo:
Regole
- l'utente può immettere valori negli Stati Uniti o in Metrica e l'interfaccia utente si occuperà di contrassegnarla correttamente
- Tutte le unità internamente verranno archiviate come Stati Uniti, poiché la maggior parte del sistema ha già la maggior parte dei dati memorizzati in questo modo e dipende da questo. Non dovrebbe importare, suppongo, finché non mischiate l'unità.
- Tutto l'output sarà in USA o Metrico, a seconda della selezione / preferenza / preferenza dell'utente.
In teoria sembra fantastico e sembra una soluzione. Tuttavia, un piccolo problema che ho riscontrato è questo:
Alcuni dati sono memorizzati nel codice o nel database che già restituisce dati come questo: 4 x 13/16" screws
, che significa "quattro volte viti". Ho bisogno che sia negli Stati Uniti o in Metrica. Dove esattamente metto il codice di conversione per fare la conversione per questa unità?
Quanto sopra già mescola presentazione e dati, ma i dati per il campo che ho bisogno di compilare è tutta la stringa. Posso sicuramente dividerlo nel numero 4, il 13/16 ", e" x "e" viti ", ma la domanda rimane ... dove inserisco il codice di conversione?
Percorsi diversi per le routine di conversione
1) In questo momento la stringa è in una classe in cui è prodotta. Posso inserire il codice di conversione direttamente in quella classe e potrebbe essere una buona soluzione. Tranne allora, voglio essere coerente, quindi metterò le procedure di conversione ovunque nel codice at-data-source, o subito dopo averlo letto dal database. Il problema però è che penso che il mio codice avrà a che fare con due sistemi, in tutto il codebase, dopo questo, dovrei farlo.
2) Secondo le regole, la mia idea era di inserirlo nello script della vista, ovvero l'ultima modifica per modificarlo prima che venisse mostrato all'utente. E potrebbe essere la cosa giusta da fare, ma poi mi sembra che potrebbe non essere sempre la soluzione migliore. (In primo luogo, rende complicato lo script di visualizzazione un po ', in secondo luogo, ho bisogno di fare più lavoro sul lato dati per dividere di più le cose, o fare un'analisi extra, come nel mio caso sopra).
3) Un'altra soluzione è quella di farlo da qualche parte nel passo di preparazione dei dati prima della vista, alias da qualche parte nel mezzo, prima della vista, ma dopo la fonte dei dati. Questo mi sembra disordinato e questo potrebbe essere il motivo per cui il mio codebase è in questo modo in questo momento.
Sembra che non ci sia la soluzione migliore. Cosa devo fare?
Domanda
Il mio obiettivo è capire come strutturare e dove posizionare il mio codice di conversione unità all'interno del sistema. Il sistema software in questione è un sistema LAMP simile a MVC (Zend Framework 2).
Esempio specifico
Al momento ho una classe che ha dato un id
al momento della creazione, ha un metodo getValue()
, che restituisce 4 x 13/16" screws
. A seconda di id
, è possibile produrre numeri diversi, ma sono ancora in pollici. Dovrei notare che alcuni numeri sono scritti con la barra di divisione ( 13/16"
) e alcuni usano la notazione decimale ( 0.8125"
). Come posso configurare il mio framework in modo che possa visualizzare tali valori anche in millimetri?