Sto modellando un sistema chimico e ho problemi con la denominazione dei miei elementi / oggetti 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 quei due, probabilmente userei semplicemente la formula atomica poiché sono ragionevolmente comuni.
Tuttavia, ne ho altri come esafluorosilicato di sodio, che è Na2SiF6.
In questo esempio, la formula atomica non è così evidente (per me), ma il nome chimico è terribilmente lunga: myEnum.SodiumHexaFluoroSilicate
. Non sono sicuro di come riuscire a trovare un nome chimico abbreviato che abbia un modello di denominazione coerente.
Ci sono alcuni problemi che sto cercando di affrontare attraverso la denominazione degli elementi enum.
La prima è la leggibilità, con i nomi più lunghi che presentano un problema.
Il secondo è la facilità nel raccogliere il codice per i nuovi manutentori, e qui i nomi più brevi presentano un problema.
Il prossimo problema è che gli imprenditori di solito fanno riferimento al nome chimico completo, ma non sempre. I prodotti chimici "bocconi" sono indicati dalla loro formula.
L'ultima preoccupazione è assicurarsi che sia coerente. Io non wan't una convenzione di denominazione mista in quanto sarà impossibile ricordare quale utilizzare.
Da un punto di vista della manutenzione, quale delle opzioni di denominazione sopra preferiresti vedere e perché?
Nota: tutto qui sotto la riga è supplementare | materiale chiarificatore. 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 { Acido solforico, Acido cloridrico, SodiumHexafluorosilicate }
Ecco alcuni dettagli aggiuntivi dai commenti su questa domanda:
- Il pubblico per il codice sarà solo programmatore, non chimico.
- 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 avrei al massimo 100 composti, quindi non devo preoccuparmi di ogni possibile composto. 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, la massa molare (in g / mol) viene utilizzata per calcolare 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 del gas ideale e il suo uso della costante di gas specifica
Una funzione di esempio potrebbe apparire come:
GetMolesFromMass doppio pubblico (double mass_grams, myEnum.ChemTypes chem) { double molarWeight = MolarWeightLookupFunctionByChem (chem); // restituisce grammi / mole doppie moli = massa / molare Peso; // converte in moli talpe di ritorno; } // Chiamata di esempio: myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.Na2SiF6); //*o* myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
pubblico doppio GetSpecificGravity (myEnum.ChemTypes chem, double conc) { // recupera il peso specifico del composto chimico in base alla concentrazione double sg = SpecificGravityLookupTableByChem (chem, conc); }
Quindi l'enum del nome composto viene usato come chiave e per fornire coerenza nel riferimento al composto con le relative funzioni.
Substance
con qualsiasi proprietà di cui abbiano bisogno.