আমার ধারণা হার্ড কোডিং এবং সেরা অনুশীলন সম্পর্কে এটি আরেকটি প্রশ্ন। বলুন আমার কাছে মানগুলির একটি তালিকা আছে, ফল বলতে দিন, ডাটাবেসে সঞ্চিত (এটি ডাটাবেসে থাকা দরকার যেমন টেবিলটি অন্য উদ্দেশ্যে যেমন এসএসআরএস রিপোর্টের জন্য ব্যবহৃত হয়), একটি আইডি সহ:
1 Apple
2 Banana
3 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)
অথবা অন্য কিছু?
কারণ অবশ্যই অ্যাপ্লিকেশন জুড়ে ফ্যাভোরাইটফুট ব্যবহার করা হবে, তালিকাটি যুক্ত হতে পারে বা সম্পাদিত হতে পারে।
কেউ সিদ্ধান্ত নিতে পারেন যে তারা 'দ্রাক্ষা' নামকরণ করে 'গ্রেপ' রাখতে চান এবং এটি অবশ্যই হার্ডকোডযুক্ত স্ট্রিং বিকল্পটি ভঙ্গ করে।
হার্ডকোডযুক্ত আইডি সম্পূর্ণরূপে পরিষ্কার নয়, যেমন দেখানো হয়েছে আপনি এটি কোন আইটেমটি তাড়াতাড়ি সনাক্ত করতে একটি মন্তব্য যুক্ত করতে পারেন।
এনাম বিকল্পের মধ্যে ডাটাবেস থেকে নকল তথ্য জড়িত যা ভুল বলে মনে হচ্ছে এটি সিঙ্ক থেকে বেরিয়ে যেতে পারে।
যাইহোক, কোনও মন্তব্য বা পরামর্শের জন্য অগ্রিম ধন্যবাদ।
MyApplication.Grape.ID
তোতলা, তাই কথা। একটি "অ্যাপল" 3 "আইডি" এর চেয়ে বেশি "রেড_ অ্যাপল" নয় 4 সুতরাং "অ্যাপল" নামকরণ করে "রেড_অ্যাপল" নামকরণের সম্ভাবনা 3 কে 4 (এবং এমনকি 3) ঘোষণার চেয়ে বেশি বোঝাতে পারে না। একটি এনামের বিন্দুটি হল তার সংখ্যার ডিএনএ বিমূর্ত করা। তাই হয়তো এটা করার সময় সত্যিই decouple নির্বিচারে রিলেশনাল ডিবি কি যে আক্ষরিক কেউ এর ব্যবসা মডেল অর্থ আছে।