সিস্টেমের জাভা অংশের বাইরে রেখাচিত্রমালা ব্যবহার করার জন্য স্ট্রিং বা ইনট ব্যবহার করা ভাল better


11

জাভাতে এনাম ব্যবহার সম্পর্কে আমাদের কাজ নিয়ে আমরা আলোচনা করছিলাম।

একজন সহকর্মী যুক্তি দিচ্ছিলেন যে সার্ভার-সাইডে এনাম ব্যবহার করার সময়, যখনই প্রয়োজন হবে তখন আমরা এটির উল্লেখ করার জন্য স্ট্রিংটি ব্যবহার করা উচিত (উদাহরণস্বরূপ যখন জেএস থেকে সার্ভারে ডেটা প্রেরণ করার সময় বা ডাটাবেসে স্টোর করার সময়), এটি যুক্তি দিয়েছিলেন যে এটি আরও পরিষ্কার বিকাশকারী এবং তর্ক করে যে এটি টাইপসের ক্ষেত্রে দ্রুত ব্যর্থ হবে।

আমি এই ক্ষেত্রে এনামগুলি সনাক্ত করতে সর্বদা পূর্ণসংখ্যার ব্যবহার করতাম, কারণ এটি অপরিবর্তনীয় শনাক্তকারী হবে এবং কেস এবং টাইপোর সমস্যা হবে না (যদিও কোনও দেব যদি 1 এর পরিবর্তে 2 মানটি ব্যবহার করতে ভুল করেন তবে তা দ্রুত ব্যর্থ হবে না)।

এই যুক্তিগুলি সম্পর্কে খুব বিশ্লেষক হওয়ার কারণে আমি বলব যে স্ট্রিংগুলি ব্যবহার করা ভাল তবে এটি সম্পর্কে আমি একটি অদ্ভুত অনুভূতি পেয়েছি (যেন এটি একটি ভাল পদ্ধতির মতো নয়)।

এই আলোচনা সম্পর্কে কোন সেরা অনুশীলন যা আমাকে গাইড করতে পারে?

সম্পাদনা: যখনই এটি সম্ভব হয়, আমরা এনাম নিজেই ব্যবহার করি, সুতরাং আমাদের সমস্ত জাভা কোড এনাম ব্যবহার করে। "একটি এনামের রেফারেন্স" দ্বারা আমার অর্থ: জাভাস্ক্রিপ্ট থেকে সার্ভারে ডেটা এক্সচেঞ্জ করার সময় বা ডাটাবেসে ডেটা সংরক্ষণ করার সময় এনামের মধ্যে মান উল্লেখ করা


1
আপনার জন্য একটি "এনামের রেফারেন্স" কী? সোর্স কোডের মধ্যে সাধারণ ব্যবহার? ডেটা বেসে সংরক্ষণের জন্য সিরিয়ালকরণ? ব্যবহারকারীর ডকুমেন্টেশনে ব্যবহার করার জন্য এক্সপ্রেশন? প্রযুক্তিগত ডকুমেন্টেশন ব্যবহার করার জন্য প্রকাশ? উত্তর সবার জন্য একদম আলাদা হবে।
কিলিয়ান ফুট

আমি প্রশ্নটি সম্পাদনা করেছি এবং আমি আশা করি এটি এখন আরও পরিষ্কার হবে: "জাভাস্ক্রিপ্ট থেকে সার্ভারে ডেটা এক্সচেঞ্জ করার সময় বা ডাটাবেজে অন্য কোনও উপায়ে
স্ট্রোক

জাভাস্ক্রিপ্ট এপিআইতে আমি অবশ্যই স্ট্রিং ব্যবহার করতাম। ডিবি উভয় তাদের সুবিধা আছে। কিছু ডাটাবেস এনাম সাপোর্টে তৈরি করেছে।
কোডসইনচওস

উত্তর:


15

ভাল প্রশ্ন. জাভাতে এনামের ব্যবহার মূলত এমন তথ্য হ্যান্ডেল করা যা কিছুটা প্রকৃতির স্বভাবগত। কার্ডের চার ধরণের স্যুট হ্যান্ডেল করতে এনাম ব্যবহার করা ক্লাসিক উদাহরণ। এটি একটি পূর্ণসংখ্যার ব্যবহারের সমস্ত কার্যকারিতা সুবিধা সরবরাহ করে এবং এটি আপনার প্রোগ্রামেও স্পষ্ট।

জাভা এর বাইরে, কেন আপনি পূর্ণসংখ্যা ব্যবহার চালিয়ে যাবেন না? সম্ভবত আপনার জাভা বাইরে এনাম টাইপ নেই, যদিও এর অর্থ এই নয় যে আপনি পারফরম্যান্সের উদ্দেশ্যে পূর্ণসংখ্যার ব্যবহার চালিয়ে যেতে পারবেন না, তাই না? হ্যাঁ, এটি পুরোপুরি সত্য, যদিও আপনি নতুন এনাম মান যুক্ত করলে কী হয় তা বিবেচনা করুন। যদি আপনি এটিকে শেষ পর্যন্ত যোগ না করেন তবে নতুন মানের পরে অন্যান্য সমস্ত এনাম মান এক দ্বারা বাড়ানো হবে। ঠিক আছে, আমরা কেবল নম্বরটি নির্দিষ্ট করব যাতে এটি পরিবর্তন করতে না পারে বা আমরা সর্বদা এটি শেষে যুক্ত করব। আপনি কি নিশ্চিত যে আপনার সহকর্মীরা সর্বদা এটি দ্বারা সঠিকভাবে করবেন? সাধরণ? সম্ভবত? আশা রাখি,? সম্ভবত আপনি যে 100% না। এক সেকেন্ডের জন্য এটি মনে রাখবেন।

আপনার বস আপনাকে জানায় যে শেষ আপডেটের পরে ক্লায়েন্টটিতে আপনার সফ্টওয়্যারটি ব্যবহার করে কোনও গোলমাল রয়েছে। এখন সমস্ত সত্তা এক্সের মতো কাজ করে যেমন তাদের এনাম মান ওয়াইন দেওয়া হয়েছিল এমনকি যদি তাদের সত্যিকার অর্থে জেড অর্পণ করা হয়েছিল। আপনি সংগ্রহস্থলটি পরীক্ষা করে দেখুন এবং হ্যাঁ, কেউ একটি নতুন এনাম মান যুক্ত করেছেন এবং আপনার নির্দেশিকাগুলি আপনাকে যেমন অনুরোধ করেছিলেন তেমন অনুসরণ করেনি। এখন জুড়েছে জটিলতা যে ডাটাবেসের তে এটি 4 লেখা আছে, যখন এটি সত্যিই 3 হওয়া উচিত, আছে ব্যতীত রেকর্ডগুলি আপডেট যা সত্যিই পূর্বে সন্নিবেশিত করা হয়েছে হয় 4. কি enum মান 4 যাহাই হউক না কেন pertains? এটা কি ওয়াই না? তোমার মনে নেই। যাচাই করার জন্য আপনাকে প্রোগ্রামটি পরীক্ষা করতে হবে। সোজা কথায় বলতে গেলে, এটা একটা গোলযোগ।

পরিবর্তে, যদি আপনার ডাটাবেস "হৃদয়", "ডায়মন্ডস", "স্প্যাডস", "ক্লাবস" লিখেছিল, তবে আপনি স্থানের দিক থেকে কিছুটা হ্রাস পেয়েছেন এবং এতগুলি অর্জন করেছেন। এটি সত্য যে আমরা একটি ছোটখাটো পারফরম্যান্স হিটের বিষয়ে কথা বলছি, তবে আপনার সত্যিকার অর্থে ডাটাবেসটি অ্যাক্সেস করা উচিত নয় যা প্রায়শই কোনও পার্থক্য আসে। স্থান হিসাবে, সিস্টেম অ্যাডমিনিস্ট্রেটরদের এ ছেড়ে দিন (আপনার। সমস্যাটি নয়))।

আপনি যদি এমন একটি সহজ প্রোগ্রাম তৈরি করেন যা পরিবর্তন করা সহজ, আপনি দীর্ঘমেয়াদে নিজেকে অনুগ্রহ করে চলেছেন, আমাকে বিশ্বাস করুন। এর এই দিকটি আমার নম্র মতের চেয়ে আলাদা নয়।


2
ভাল পয়েন্ট, কিন্তু আপনি যদি যেখানে কেউ (enum সত্ত্বা এক নাম পরিবর্তন করার সিদ্ধান্ত নেয় সম্পর্কে বিস্মরণ করছি HEARTSকরার Heartআবার আপনার উদাহরণে বা কিছু) এবং হঠাৎ সবকিছু বিরতি।
স্কট হুইটলক

1
@ স্কটউইটলক আপনি যদি এই জন্য অ্যাকাউন্ট করেন তবে তা নয়, যদিও তারা এটির পুরোপুরি নামকরণের সিদ্ধান্ত নিতে পারে। তারা দুর্ঘটনাক্রমে ডাটাবেস মুছে ফেলতে এবং প্রকল্পটিও মুছতে পারে, তবে আমরা এখানে প্রতিটি সম্ভাব্য ঘটনার জন্য অ্যাকাউন্ট করতে পারি না।
নীল

5
@ নীল - সত্য তবে আমরা এখানে প্রতিকূলতা বাজানোর চেষ্টা করছি। আমি জাভা এনামগুলির সাথে পরিচিত নই, তবে সি # তে আমি এনামগুলির জন্য স্পষ্টভাবে মানগুলি সেট করেছিলাম যদি প্রোগ্রামের বাইরে মানগুলির অর্থ হওয়া প্রয়োজন (যেমন হৃদয় = 1, হীরা = 2 ইত্যাদি) । যেহেতু এনাম ব্যবহারের এটি ডিফল্ট উপায় নয়, এটি পরবর্তী সম্পাদককে বিরতি দেওয়া উচিত। এগুলি ব্যবহার করে আর কোথায় ব্যবহৃত হয় তা লক্ষণীয় একটি মন্তব্য।
স্কট হুইটলক

1
@ স্কটউইটলক এই জাতীয় সমস্যা এড়াতে অবশ্যই এটি যাওয়ার আরও ভাল উপায়। আপনি যদি তা করে মনে করেন, তবুও আপনি ডাটাবেসে 1, 2, 3, 4 দেখতে পাবেন বা কোনও ফাইলে সিরিয়ালযুক্ত হবেন। কোনওভাবেই আপনি এটি টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো টুকরো থেকে আদর্শ নয়।
নিল

2
যদি আমি যুক্ত করতে পারি, যদি এনামটি স্ট্রিং হিসাবে সিরিয়ালযুক্ত হয় এবং কেউ এনামের নাম পরিবর্তন করে, ডিসিরিয়ালাইজেশন চলাকালীন ত্রুটি পার্সিংয়ের সময় হবে। যদি এনামটি অন্তর্নিহিত থাকে এবং কেউ সংজ্ঞা পরিবর্তন করে তবে ত্রুটিটি প্রক্রিয়াকরণের সময় আরও নিচে থাকবে, যা নির্ণয় করা আরও কঠিন be সিসি @ স্কটউইটলক।
এন্ডি তজাহোনো

1

আমি নীলের উত্তরটির সাথে একমত, তবে কেবল একটি সংযোজন:

জাভা এনামগুলিতে অবজেক্টস থাকে তাই তাদের ক্ষেত্র এবং পদ্ধতি থাকতে পারে। সুতরাং আপনি প্রতিটি এনামকে কিছু ম্যানুয়ালি নির্দিষ্ট মান দিতে পারেন এবং বাইরের কাজের জন্য এটি উল্লেখ করার পরিবর্তে সেই মানটি ব্যবহার করুন।

এটি এনাম উদাহরণগুলির নাম যুক্ত / অপসারণ / পুনঃক্রম এবং পুনরায় পরিবর্তন উভয়ই বেঁচে থাকবে। তবে আপনাকে এনাম ক্ষেত্রগুলির জন্য অনেকগুলি সরঞ্জামে উপলব্ধ স্বয়ংক্রিয় ব্যবহারের পরিবর্তে সিরিয়ালাইজেশন / ডিসরিয়ালাইজেশন যুক্তি লিখতে হবে। (এটি সহজ, তবে এটির অ্যাডিশনাল কাজ)।

এবং আপনাকে অবশ্যই সেই মানগুলি ম্যানুয়ালি অনন্য রাখতে হবে (তবে এটি সি স্টাইলের এনামগুলিতে একই) এবং এটি পরীক্ষা করার জন্য আপনি পরীক্ষা লিখতে পারেন।


হ্যাঁ, আমরা এই পথে নেমেছি, তবে আমরা হাইবারনেট ব্যবহার করছি এবং ডাটাবেসে / থেকে মানটি বিশ্লেষণ করতে আমাদের কিছু অতিরিক্ত কোড যুক্ত করতে হয়েছিল এবং এটি একপ্রকার অদ্ভুত বলে মনে হয়েছিল, তাই আমরা সিদ্ধান্ত নিয়েছি .আরএসটি সম্পর্ক এবং এনাম নাম দিয়ে যান।
জেএসবাচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.