Saya kira ini adalah pertanyaan lain tentang hard coding dan praktik terbaik. Katakanlah saya memiliki daftar nilai, katakanlah buah, disimpan dalam basis data (harus ada dalam basis data karena tabel digunakan untuk keperluan lain seperti laporan SSR), dengan ID:
1 Apple
2 Banana
3 Grapes
Saya dapat menyajikannya kepada pengguna, ia memilih satu, itu akan disimpan di profilnya sebagai FavouriteFruit dan ID disimpan dalam catatannya di database.
Ketika datang ke aturan bisnis / logika domain, apa saja rekomendasi untuk menetapkan logika ke nilai tertentu. Katakanlah jika pengguna telah memilih Grapes Saya ingin melakukan beberapa tugas tambahan, apa cara terbaik untuk referensi nilai Grapes:
// Hard coded name
if (user.FavouriteFruit.Name == "Grapes")
// Hard coded ID
if (user.FavoriteFruit.ID == 3) // Grapes
// Duplicate the list of fruits in an enum
if (user.FavouriteFruit.ID == (int)Fruits.Grapes)
atau sesuatu yang lain?
Karena tentu saja FavouriteFruit akan digunakan di seluruh aplikasi, daftar dapat ditambahkan ke, atau diedit.
Seseorang mungkin memutuskan bahwa mereka ingin 'Grape' diganti namanya menjadi 'Grape' dan ini tentu saja akan mematahkan opsi string hardcoded.
Hardcoded ID tidak sepenuhnya jelas, seperti yang ditunjukkan, Anda bisa menambahkan komentar untuk mengidentifikasi item mana yang cepat.
Opsi enum melibatkan duplikasi data dari database yang tampaknya salah karena mungkin tidak sinkron.
Bagaimanapun, terima kasih sebelumnya atas segala komentar atau saran.
MyApplication.Grape.ID
berbicara gagap. "Apple" bukan "Red_Apple" lebih dari ID 3 juga 4. Jadi potensi untuk mengubah nama "Apple" menjadi "Red_Apple" tidak masuk akal daripada menyatakan bahwa 3 adalah 4 (dan mungkin bahkan 3). Tujuan dari enum adalah untuk memisahkan DNA numeriknya. Jadi mungkin sudah saatnya untuk benar - benar memisahkan kunci DB relasional sewenang-wenang yang secara harfiah tidak memiliki makna dalam model bisnis seseorang.