Saya memodelkan sistem kimia, dan saya mengalami masalah dengan penamaan elemen / item saya dalam enum.
Saya tidak yakin apakah saya harus menggunakan:
- rumus atom
- nama kimianya
- nama kimia yang disingkat.
Sebagai contoh, asam sulfat adalah H2SO4 dan asam klorida adalah HCl.
Dengan keduanya, saya mungkin hanya akan menggunakan rumus atom karena keduanya cukup umum.
Namun, saya punya yang lain seperti sodium hexafluorosilicate yang Na2SiF6.
Dalam contoh itu, rumus atom tidak jelas (untuk saya), tapi nama kimia amat sangat panjang: myEnum.SodiumHexaFluoroSilicate
. Saya tidak yakin bagaimana saya dapat dengan aman menghasilkan nama kimia yang disingkat yang akan memiliki pola penamaan yang konsisten.
Ada beberapa masalah yang saya coba atasi melalui penamaan elemen enum.
Yang pertama adalah keterbacaan, dengan nama yang lebih panjang menghadirkan masalah.
Yang kedua adalah kemudahan mengambil kode untuk pengelola baru, dan di sini nama yang lebih pendek menyajikan masalah.
Masalah berikutnya adalah bahwa pemilik bisnis biasanya merujuk pada nama kimia lengkap, tetapi tidak selalu. Bahan kimia "seteguk" dirujuk dengan formula mereka.
Perhatian terakhir adalah memastikan itu konsisten. Saya tidak ingin mengadakan konvensi penamaan campuran karena tidak mungkin untuk mengingat mana yang akan digunakan.
Dari sudut pandang pemeliharaan, manakah dari opsi penamaan di atas yang akan Anda pilih dan mengapa?
Catatan: Semua yang ada di sini di bawah ini adalah tambahan | materi klarifikasi. Tolong jangan terjebak di dalamnya. Pertanyaan utama tentang penamaan objek canggung.
Opsi Atom
myEnum.ChemTypes publik { H2SO4, HCl, Na2SiF6 }
Opsi Nama Kimia
myEnum.ChemTypes publik { Asam belerang, Asam hidroklorik, SodiumHexafluorosilicate }
Berikut adalah beberapa detail tambahan dari komentar pada pertanyaan ini:
- Pemirsa untuk kode hanya akan menjadi programmer, bukan ahli kimia.
- Saya menggunakan C #, tapi saya pikir pertanyaan ini lebih menarik ketika mengabaikan bahasa implementasi.
- Saya mulai dengan 10 - 20 senyawa dan memiliki paling banyak 100 senyawa, jadi saya tidak perlu khawatir tentang setiap senyawa yang mungkin. Untungnya, ini adalah domain tetap.
Enum digunakan sebagai kunci untuk pencarian untuk memfasilitasi perhitungan kimia umum / umum - yang berarti bahwa persamaan adalah sama untuk semua senyawa tetapi Anda memasukkan properti senyawa untuk menyelesaikan persamaan.
- Misalnya, massa molar (dalam g / mol) digunakan saat menghitung jumlah mol dari massa (dalam gram) senyawa. FWIW, Massa Molar == Berat Molar.
- Contoh lain dari perhitungan umum adalah Hukum Gas Ideal dan penggunaannya atas Constant Gas Spesifik
Fungsi sampel mungkin terlihat seperti:
GetMolesFromMass ganda publik (double mass_grams, myEnum.ChemTypes chem) { double molarWeight = MolarWeightLookupFunctionByChem (chem); // mengembalikan gram / mol double moles = massa / molarBerat; // mengonversi menjadi mol mengembalikan tahi lalat; } // Panggilan Sampel: myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.Na2SiF6); //*atau* myMoles = GetMolesFromMass (1000, myEnum.ChemTypes.SodiumHexafluorosilicate);
double publik GetSpecificGravity (myEnum.ChemTypes chem, double conc) { // mengambil gravitasi spesifik senyawa kimia berdasarkan konsentrasi double sg = SpecificGravityLookupTableByChem (chem, conc); }
Jadi enum dari nama majemuk digunakan sebagai kunci dan untuk memberikan konsistensi dalam merujuk senyawa dengan fungsi terkait.
Substance
dengan properti apa pun yang mereka butuhkan.