Regola aziendale per visualizzare i dati in maiuscolo - come gestire?

5

Parte di un sistema su cui sto lavorando gestisce alcune informazioni sui titoli (azioni, obbligazioni, ecc ...) e le regole aziendali specificano che alcuni campi devono essere visualizzati solo in tutti i CAPS (simboli di serie e CUSIP ad esempio). Gli utenti dovranno guardare i dati visualizzati sullo schermo e anche creare / modificare le operazioni di immissione dei dati.

Qual è il posto migliore per occuparsene?

1. Solo livello di presentazione

l'utente inserisce "ibm" come simbolo del titolo, memorizzato nel database come "ibm", convertito in maiuscolo quando visualizzato nell'app ("IBM")

2. Converti in CAPS prima di archiviarli in DB

l'utente inserisce "ibm", la classe del modello converte in maiuscolo e invia al database, memorizzato come "IBM"

Qualcosa come un setter personalizzato:

private string _StockSymbol;
public string StockSymbol
{
    get { return _StockSymbol; }
    set 
    {
        if (value != null)
            value = value.ToUpper();
        _StockSymbol = value;
    }
}

3. Converti in CAPS in DB

l'utente inserisce "ibm", la query di inserimento del database viene convertita in "IBM" (ad esempio, utilizzando la funzione UPPER in SQL)

Il risultato finale è lo stesso per gli utenti: vedono i loro dati in tutti i CAPS e il sistema non si cura se i loro dati inseriti sono nel caso corretto o meno. La risposta più "MVC compliant" sembra essere la # 1, ma se questi dati non saranno mai usati in nessun altro formato diverso da tutti i CAPS, direi che dovrebbe essere convalidato come tale prima di essere memorizzato nel database. Questo diventa più un problema di controller o di modello di visualizzazione, giusto?

Ho sentito persone parlare di realizzare questo lato client con Java (e persino con i CSS), ma sembra una soluzione molto scarsa.

Penso che la domanda sia indipendente dal linguaggio / sistema, ma se è importante, sto usando MS SQL con Entity Framework / ASP.Net MVC.

Ciò su cui mi sto sfogliando è se una regola aziendale di presentazione come questa debba influenzare il modo in cui i dati sono memorizzati nel DB (CAPS vs no CAPS). L'applicazione non si preoccupa se il simbolo del titolo IBM viene immesso come "iBm" o "ibM" ma sembra sbagliato memorizzare i dati in quel modo (verrà sempre utilizzato / visualizzato in MAIUSCOLO).

Considera questo un problema di convalida dei dati da gestire a livello di controller / modello o un dettaglio di presentazione da gestire solo alla vista?

    
posta Jim 09.10.2013 - 23:32
fonte

4 risposte

5

Penso che dipenda piuttosto dal fatto che la maiuscola sia un requisito di visualizzazione o una proprietà dei dati stessi.

Per fare un esempio diverso, se fosse necessario visualizzare un nome con il cognome maiuscolo per l'enfasi, lo farei in maiuscolo nell'interfaccia utente di output, come nel tuo (1). Questo è un requisito di visualizzazione in quanto i cognomi non sono maiuscoli "naturali" - le altre visualizzazioni potrebbero utilizzare la maiuscola originale.

Per tornare al tuo caso, anche se non sono un esperto di simboli azionari, ma per quanto ho capito sono sempre in maiuscolo. Cioè, un simbolo del titolo è intrinsecamente in maiuscolo, quindi lo controllerei come parte della convalida dell'input, come nel tuo (2).

    
risposta data 10.10.2013 - 16:02
fonte
1

Penso che sia bello avere sempre gli stessi dati nello stesso modo nel database.

Ci sono molti casi in cui un'applicazione potrebbe interessarsi se qualcosa è formattato come "iBm" o "ibM" . Dopotutto "iBm"!="ibM"

Uno sviluppatore che chiede al database il nome di un titolo può ragionevolmente aspettarsi che lo stesso stock sia sempre formulato allo stesso modo. Soprattutto se un sacco di dati sono memorizzati in maiuscolo, la sua applicazione potrebbe avere dei bug se alcuni esempi non vengono formattati come previsto. Questo potrebbe introdurre bug.

Quindi il database non dovrebbe consentire di aggiungere dati che non sono formattati correttamente, quindi dovresti risolvere il problema a livello di database.

    
risposta data 10.10.2013 - 15:31
fonte
0

Se alcuni valori sono sempre in maiuscolo, li memorizzerei in maiuscolo per i seguenti motivi:

  1. Per ridurre il numero di conversioni nel codice.
  2. Per diminuire il possibilità che i futuri aggiornamenti del codice non prendano il Conto aziendale.
  3. Per facilitare la risoluzione dei problemi. Se     qualcuno nel settore è abituato a vedere certe cose in alto     caso, renderà la sua vita più facile durante il debug / risoluzione dei problemi se     i valori vengono visualizzati in un formato familiare.

Detto questo, vorrei convertire in entrata e convalidare / convertire se necessario sul back-end prima di salvare nel database.

    
risposta data 10.10.2013 - 16:20
fonte
0

Li conserverei sempre in minuscolo. In questo modo puoi assumere che stai sempre guardando in DB per la minuscola (in questo caso particolare). La chiave deve essere uniforme nel DB. Evita il problema cristiano descritto .

Questo tipo di cose sono solo problemi di visualizzazione, quindi dovresti formattare quando mostri i dati all'utente (# 1 nella tua domanda). Questo offre maggiore flessibilità, se per X motivo da qualche parte avresti bisogno di visualizzare quei valori con un formato diverso, quindi potresti facilmente.

    
risposta data 10.10.2013 - 17:10
fonte

Leggi altre domande sui tag