ฉันเดาว่านี่เป็นคำถามเกี่ยวกับการเข้ารหัสและแนวทางปฏิบัติที่ดีที่สุด สมมติว่าฉันมีรายการค่าให้บอกผลไม้ที่เก็บไว้ในฐานข้อมูล (จำเป็นต้องอยู่ในฐานข้อมูลเนื่องจากตารางจะใช้เพื่อวัตถุประสงค์อื่นเช่นรายงาน SSRS) พร้อมรหัส:
1 Apple
2 Banana
3 Grapes
ฉันอาจนำเสนอให้กับผู้ใช้เขาเลือกหนึ่งมันจะถูกเก็บไว้ในโปรไฟล์ของเขาเป็น FavouriteFruit และ ID ที่เก็บไว้ในบันทึกของเขาในฐานข้อมูล
เมื่อพูดถึงกฎเกณฑ์ทางธุรกิจ / ลอจิกโดเมนอะไรคือคำแนะนำสำหรับการกำหนดตรรกะให้กับค่าเฉพาะ พูดถ้าผู้ใช้เลือกองุ่นฉันต้องการทำงานพิเศษบางอย่างวิธีที่ดีที่สุดในการอ้างอิงค่าองุ่นคือ:
// 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)
หรืออย่างอื่น?
เนื่องจากแน่นอน FavouriteFruit จะถูกใช้ตลอดทั้งแอปพลิเคชันรายการอาจถูกเพิ่มหรือแก้ไข
บางคนอาจคิดว่าพวกเขาต้องการ 'Grapes' เปลี่ยนเป็น 'Grape' และนี่จะทำให้ตัวเลือกสตริงที่เข้ารหัสยาก
รหัส hardcoded ยังไม่ชัดเจนแม้ว่าดังที่แสดงไว้คุณสามารถเพิ่มความคิดเห็นเพื่อระบุรายการได้อย่างรวดเร็ว
ตัวเลือก enum เกี่ยวข้องกับการทำซ้ำข้อมูลจากฐานข้อมูลซึ่งดูเหมือนว่าผิดเนื่องจากอาจทำให้ข้อมูลไม่ตรงกัน
อย่างไรก็ตามขอขอบคุณล่วงหน้าสำหรับความคิดเห็นหรือข้อเสนอแนะ
MyApplication.Grape.ID
พูดติดอ่าง "Apple" ไม่ใช่ "Red_Apple" มากกว่า ID 3 ใด ๆ ก็เป็น 4 ดังนั้นความเป็นไปได้ในการเปลี่ยนชื่อ "Apple" เป็น "Red_Apple" ไม่สมเหตุสมผลกว่าการประกาศว่า 3 คือ 4 (และอาจเท่ากับ 3) จุดของ enum คือการแยก DNA ตัวเลขออกจากกัน ดังนั้นบางทีมันอาจจะถึงเวลาที่จะจริงๆแยกพลคีย์ DB สัมพันธ์ที่มีตัวอักษรไม่มีความหมายในรูปแบบธุรกิจหนึ่งของ