Kimyasal bir sistemi modelliyorum ve bir numaralandırmadaki öğelerimi / eşyalarımı adlandırırken sorun yaşıyorum.
Kullanmalı mıyım emin değilim:
- atom formülü
- kimyasal isim
- kısaltılmış bir kimyasal isim.
Örneğin, sülfürik asit H2SO4 ve hidroklorik asit HCl'dir.
Bu ikisiyle, muhtemelen oldukça yaygın oldukları için atom formülünü kullanacağım.
Bununla birlikte, Na2SiF6 olan sodyum heksaflorosilikat gibi başkalarım var.
Bu örnekte, atomik formül bariz olarak (bana) değil ama kimyasal isim iğrenç uzun: myEnum.SodiumHexaFluoroSilicate
. Tutarlı bir adlandırma modeline sahip olan kısaltılmış bir kimyasal adla nasıl güvenli bir şekilde gelebileceğimden emin değilim.
Numaralandırma öğelerini adlandırarak çözmeye çalıştığım birkaç sorun var.
Birincisi okunabilirliktir, daha uzun isimler sorun yaratır.
İkincisi, yeni koruyucular için kodu toplama kolaylığıdır ve burada daha kısa adlar bir sorun oluşturur.
Bir sonraki konu, işletme sahiplerinin genellikle tam kimyasal isme atıfta bulunmasıdır, ancak her zaman değil. "Ağız dolusu" kimyasallara kendi formülleri ile değinilmektedir.
Son endişe tutarlı olmasını sağlamaktır. Ben yok kullanımı hangi hatırlamak imkansız olacaktır olarak karışık bir adlandırma kuralı wan't.
Bakım açısından, yukarıdaki adlandırma seçeneklerinden hangisini görmeyi tercih edersiniz ve neden?
Not: Çizginin altındaki her şey tamamlayıcıdır | aydınlatıcı malzeme. Lütfen içine düşmeyin. Ana soru, garip nesneleri adlandırmakla ilgilidir.
Atom Seçeneği
kamu myEnum.ChemTypes { H2SO4, HCI, Na2SiF6 }
Kimyasal Ad Seçeneği
kamu myEnum.ChemTypes { Sülfürik asit, Hidroklorik asit, SodiumHexafluorosilicate }
İşte bu sorudaki yorumlardan bazı ek detaylar:
- Kodun izleyicisi kimyacılar değil , sadece programcılar olacaktır .
- C # kullanıyorum, ancak uygulama dilini göz ardı ederken bu sorunun daha ilginç olduğunu düşünüyorum.
- Ben 10-20 bileşik ile başlıyorum ve en fazla 100 bileşik olurdu, bu yüzden olası her bileşik hakkında endişelenmenize gerek yok . Neyse ki, sabit bir alan.
Enum, ortak / genel kimyasal hesaplamaları kolaylaştırmak için aramalar için bir anahtar olarak kullanılır - bu, denklemin tüm bileşikler için aynı olduğu anlamına gelir, ancak denklemi tamamlamak için bileşiğin bir özelliğini eklersiniz.
- Örneğin, molar kütle (g / mol cinsinden), bileşiğin bir kütlesinden (gram cinsinden) mol sayısı hesaplanırken kullanılır. FWIW, Molar Kütle == Molar Ağırlık.
- Ortak bir hesaplamanın diğer bir örneği İdeal Gaz Yasası ve Özel Gaz Sabiti'ni kullanmasıdır.
Örnek bir işlev şöyle görünebilir:
genel çift GetMolesFromMass (çift kütle_gramları, myEnum.ChemTypes chem) { çift molarWeight = MolarWeightLookupFunctionByChem (chem); // gram / mol döndürür çift mol = kütle / molar Ağırlık; // benlere dönüşür dönüş molleri; } // Örnek Çağrı: myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.Na2SiF6); //*veya* myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
kamu çift GetSpecificGravity (myEnum.ChemTypes chem, çift konsantrasyon) { // konsantrasyona göre kimyasal bileşiğin özgül ağırlığını alır double sg = SpecificGravityLookupTableByChem (chem, kons.); }
Dolayısıyla bileşik adının sıralaması bir anahtar olarak kullanılır ve bileşiğin ilgili işlevlere referansta bulunmasında tutarlılık sağlamak için kullanılır.
Substance
ihtiyaç duydukları özelliklerin örnekleri olmalıdırlar .