Estou modelando um sistema químico e estou tendo problemas para nomear meus elementos / itens dentro de uma enumeração.
Não tenho certeza se devo usar:
- a fórmula atômica
- o nome químico
- um nome químico abreviado.
Por exemplo, o ácido sulfúrico é H2SO4 e o ácido clorídrico é HCl.
Com esses dois, eu provavelmente usaria apenas a fórmula atômica, pois eles são razoavelmente comuns.
No entanto, eu tenho outros como hexafluorossilicato de sódio, que é Na2SiF6.
Nesse exemplo, a fórmula atômica não é tão óbvio (para mim), mas o nome químico é terrivelmente longo: myEnum.SodiumHexaFluoroSilicate
. Não tenho certeza de como seria capaz de criar com segurança um nome químico abreviado que teria um padrão de nomeação consistente.
Existem alguns problemas que estou tentando resolver nomeando os elementos enum.
A primeira é a legibilidade, com os nomes mais longos apresentando um problema.
A segunda é a facilidade de escolher o código para novos mantenedores, e aqui os nomes mais curtos apresentam um problema.
A próxima questão é que os empresários geralmente se referem ao nome químico completo, mas nem sempre. Os produtos químicos "cheios" são referidos por sua fórmula.
A preocupação final é garantir que seja consistente. Não quero uma convenção de nomes mistos, pois será impossível lembrar qual usar.
Do ponto de vista da manutenção, quais das opções de nomes acima você prefere ver e por quê?
Nota: Tudo aqui abaixo da linha é suplementar | material esclarecedor. Por favor, não se prenda a isso. A principal questão diz respeito a nomear os objetos estranhos.
Opção atômica
public myEnum.ChemTypes { H2SO4, HCl, Na2SiF6 }
Opção de nome químico
public myEnum.ChemTypes { Ácido sulfúrico, Ácido clorídrico, Hexafluorossilicato de sódio }
Aqui estão alguns detalhes adicionais dos comentários sobre esta pergunta:
- A audiência do código será apenas programadores, não químicos.
- Estou usando c #, mas acho que essa pergunta é mais interessante ao ignorar a linguagem de implementação.
- Estou começando com 10 - 20 compostos e teria no máximo 100 compostos, então não preciso me preocupar com todos os compostos possíveis. Felizmente, é um domínio fixo.
O enum é usado como uma chave para pesquisas para facilitar cálculos químicos comuns / genéricos - o que significa que a equação é a mesma para todos os compostos, mas você insere uma propriedade do composto para concluir a equação.
- Por exemplo, a massa molar (em g / mol) é usada no cálculo do número de moles de uma massa (em gramas) do composto. FWIW, Massa molar == Peso molar.
- Outro exemplo de cálculo comum é a Lei do Gás Ideal e seu uso da Constante de Gás Específica
Uma função de amostra pode se parecer com:
public double GetMolesFromMass (double mass_grams, myEnum.ChemTypes chem) { double molarWeight = MolarWeightLookupFunctionByChem (chem); // retorna gramas / mole moles duplos = massa / peso molar; // converte em moles moles de retorno; } // Exemplo de chamada: myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.Na2SiF6); //*ou* myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
public double GetSpecificGravity (chem myEnum.ChemTypes, conc. duplo) { // recupera a gravidade específica do composto químico com base na concentração double sg = SpecificGravityLookupTableByChem (chem, conc); }
Portanto, a enumeração do nome do composto é usada como chave e para fornecer consistência na referência ao composto com as funções relacionadas.
Substance
com quaisquer propriedades que precisem.