Estoy modelando un sistema químico y tengo problemas para nombrar mis elementos / elementos dentro de una enumeración.
No estoy seguro de si debo usar:
- la fórmula atómica
- el nombre químico
- Un nombre químico abreviado.
Por ejemplo, el ácido sulfúrico es H2SO4 y el ácido clorhídrico es HCl.
Con esos dos, probablemente usaría la fórmula atómica ya que son razonablemente comunes.
Sin embargo, tengo otros como el hexafluorosilicato de sodio que es Na2SiF6.
En ese ejemplo, la fórmula atómica no es tan obvia (para mí) pero el nombre químico es terriblemente largo: myEnum.SodiumHexaFluoroSilicate
. No estoy seguro de cómo sería capaz de encontrar un nombre químico abreviado que tenga un patrón de denominación consistente.
Hay algunos problemas que estoy tratando de resolver nombrando los elementos de enumeración.
El primero es la legibilidad, con los nombres más largos que presentan un problema.
El segundo es la facilidad de elegir el código para los nuevos mantenedores, y aquí los nombres más cortos presentan un problema.
El siguiente problema es que los dueños de negocios generalmente se refieren al nombre químico completo, pero no siempre. Los productos químicos "bocados" se refieren a su fórmula.
La última preocupación es asegurarse de que sea consistente. No quiero una convención de nomenclatura mixta, ya que será imposible recordar cuál usar.
Desde el punto de vista del mantenimiento, ¿cuál de las opciones de nombres anteriores preferiría ver y por qué?
Nota: Todo aquí debajo de la línea es complementario | material clarificador Por favor, no te atasques en él. La pregunta principal se refiere a nombrar los objetos incómodos.
Opción atómica
public myEnum.ChemTypes { H2SO4, HCl Na2SiF6 }
Opción de nombre químico
public myEnum.ChemTypes { Ácido sulfúrico, Ácido clorhídrico, Sodio Hexafluorosilicato }
Aquí hay algunos detalles adicionales de los comentarios sobre esta pregunta:
- La audiencia para el código será solo programadores, no químicos.
- Estoy usando C #, pero creo que esta pregunta es más interesante al ignorar el lenguaje de implementación.
- Estoy comenzando con 10-20 compuestos y tendría como máximo 100 compuestos, así que no necesito preocuparme por todos los compuestos posibles. Afortunadamente, es un dominio fijo.
La enumeración se usa como clave para las búsquedas para facilitar los cálculos químicos comunes / genéricos, lo que significa que la ecuación es la misma para todos los compuestos, pero inserta una propiedad del compuesto para completar la ecuación.
- Por ejemplo, la masa molar (en g / mol) se usa al calcular el número de moles de una masa (en gramos) del compuesto. FWIW, masa molar == peso molar.
- Otro ejemplo de un cálculo común es la Ley del Gas Ideal y su uso de la constante de gas específica.
Una función de muestra podría verse así:
public double GetMolesFromMass (double mass_grams, myEnum.ChemTypes chem) { double molarWeight = MolarWeightLookupFunctionByChem (chem); // devuelve gramos / mol moles dobles = masa / peso molar; // se convierte en moles devolver lunares; } // Llamada de muestra: myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.Na2SiF6); //*o* myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
GetSpecificGravity doble pública (myEnum.ChemTypes chem, double conc) { // recupera la gravedad específica del compuesto químico basado en la concentración sg doble = SpecificGravityLookupTableByChem (chem, conc); }
Por lo tanto, la enumeración del nombre compuesto se usa como clave y para proporcionar coherencia al hacer referencia al compuesto con las funciones relacionadas.
Substance
con las propiedades que necesiten.