Sto modellando un sistema chimico e ho problemi con la denominazione dei miei elementi / elementi all'interno di un enum.
Non sono sicuro se dovrei usare:
- la formula atomica
- il nome chimico
- un nome chimico abbreviato.
Ad esempio, l'acido solforico è H2SO4 e l'acido cloridrico è HCl.
Con questi due, probabilmente userò la formula atomica perché sono ragionevolmente comuni.
Tuttavia, ho altri come l'esafluorosilicato di sodio che è Na2SiF6.
In questo esempio, la formula atomica non è così ovvia (per me), ma il nome chimico è orribilmente lungo: myEnum.SodiumHexaFluoroSilicate
. Non sono sicuro di come sarei in grado di trovare un nome chimico abbreviato che avrebbe un modello di denominazione coerente.
Ci sono alcuni problemi che sto cercando di affrontare nominando gli elementi enumerati.
Il primo è la leggibilità, con i nomi più lunghi che presentano un problema.
Il secondo è la facilità di scegliere il codice per i nuovi manutentori, e qui i nomi più brevi presentano un problema.
Il prossimo numero è che i titolari di aziende di solito si riferiscono al nome completo della sostanza chimica, ma non sempre. I prodotti chimici "a bocca aperta" si riferiscono alla loro formula.
L'ultima preoccupazione è assicurarsi che sia coerente. I non non richiede una convenzione di denominazione mista in quanto sarà impossibile ricordare quale usare.
Dal punto di vista della manutenzione, quale delle opzioni di denominazione in alto vorresti vedere e perché?
Nota: tutto qui sotto la linea è supplementare | materiale di chiarimento. Per favore non impantanarti. La domanda principale riguarda la denominazione degli oggetti scomodi.
Opzione atomica
public myEnum.ChemTypes { H2SO4, HCl, Na2SiF6 }
Opzione nome chimico
public myEnum.ChemTypes { SulfuricAcid, HydrochloricAcid, SodiumHexafluorosilicate }
Ecco alcuni dettagli aggiuntivi dei commenti su questa domanda:
- Il pubblico per il codice sarà solo programmatore, non chimici.
- Sto usando C #, ma penso che questa domanda sia più interessante quando si ignora il linguaggio di implementazione.
- Sto iniziando con 10 - 20 composti e avrò al massimo 100 composti, quindi non devo preoccuparmi del possibile composto ogni . Fortunatamente, è un dominio fisso.
-
L'enum è usato come chiave per le ricerche per facilitare calcoli chimici comuni / generici - il che significa che l'equazione è la stessa per tutti i composti ma si inserisce una proprietà del composto per completare l'equazione.
- Ad esempio, massa molare (in g / mol) viene utilizzato quando si calcola il numero di moli da una massa ( in grammi) del composto. FWIW, massa molare == Peso molare.
- Un altro esempio di un calcolo comune è la legge sul gas ideale e il suo uso del Costante specifica del gas
Una funzione di esempio potrebbe essere simile a:
public double GetMolesFromMass(double mass_grams, myEnum.ChemTypes chem) { double molarWeight = MolarWeightLookupFunctionByChem(chem); //returns grams / mole double moles = mass / molarWeight; //converts to moles return moles; } //Sample Call: myMoles = GetMolesFromMass(1000, myEnum.ChemTypes.Na2SiF6); //*or* myMoles = GetMolesFromMass(1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
public double GetSpecificGravity(myEnum.ChemTypes chem, double conc) { //retrieves specific gravity of chemical compound based upon concentration double sg = SpecificGravityLookupTableByChem(chem, conc); }
Quindi l'enum del nome composto viene usato come chiave e per fornire coerenza nel riferire il composto con le funzioni correlate.