Dizionario degli oggetti

5

Ho un dizionario di oggetti di una colonna di classe

Dictionary<double, Columns>

Le colonne sono una classe di colonne, ovvero il nome, il codice postale, ecc., il telefono cellulare. Vorrei rendere la classe Columns aperta quanto più possibile per l'estensione, quindi non sarà un problema aggiungere altre classi. Ho bisogno di impostare alcune colonne per essere lì sempre e vorrei che l'utente fosse in grado di definire quali colonne visualizzare dal rimanente e aggiungere anche colonne personalizzate. Ogni colonna deve avere un metodo getValue ()

La mia idea è di creare una colonna di classe astratta e derivarne colonne specifiche. Fai in modo che ogni classe figlio implementi il metodo getValue () rendendolo astratto cosa dovrebbe costringerlo a sovrascrivere (io sono corretto?). Definirò enum che elencherà tutti i tipi di colonna disponibili. Infine, una colonna di classe manterrà tutte le colonne disponibili nel dizionario

Dictionary<enum, Column>

La mia domanda è: il mio modo di pensare è corretto? C'è spazio per miglioramenti? Sarebbe una buona idea usare le interfacce? Infine, questo progetto sarà efficiente e veloce per modificare rapidamente i valori nelle colonne, ad esempio entro un secondo potrei dover aggiornare 50 diversi record in questo dizionario.

    
posta Macin 21.11.2013 - 13:57
fonte

1 risposta

8

Penso che sia necessario mettere in pausa e riconsiderare ciò che stai facendo. La mia preferenza è che il codice rispecchi il problema aziendale che sto cercando di risolvere. Definire il tuo problema in termini di primitiva del linguaggio e di un oggetto complesso che rispecchia un elemento del database non mi aiuta a capire cosa stai cercando di risolvere.

Come menzionato da Heinzi, usare un doppio per la tua chiave è probabilmente poco saggio. Considerare un numero intero (che potrebbe rappresentare un ID cliente) o una stringa (che potrebbe rappresentare un nome cliente). Se la velocità / prestazioni sono preoccupanti, probabilmente utilizzerei un numero intero, ma non mi preoccuperei troppo di ciò a meno che non l'avessi messo a confronto in entrambi i modi.

Per il valore, prendi in considerazione la creazione di una classe che abbia senso per il tuo problema. Hai menzionato name, post code, etc, mobile phone. che mi ha fatto pensare a "informazioni identificative personali" (PII) o "informazioni di contatto del cliente" (CCI) o qualcosa di simile. Quindi vorrei creare una classe per quell'effetto e usarla come tipo di valore.

Se disponevi di una classe PII e una CCI che potrebbero essere archiviate, prenderei in considerazione un'interfaccia e la userei come tipo di valore. Usare un enum o qualche altro tipo di meccanismo di flagging per indicare i tipi di dati disponibili è perfettamente adeguato. Se si utilizza un'interfaccia, valutare l'opportunità di inserire le flag all'interno dell'interfaccia per abilitare l'accesso aggiuntivo oltre i campi di interfaccia principali.

    
risposta data 21.11.2013 - 15:51
fonte

Leggi altre domande sui tag