switchবিবৃতি এবং পলিমারফিজম উভয়েরই ব্যবহার রয়েছে। নোট করুন যে তৃতীয় বিকল্পটি খুব বেশি বিদ্যমান (যে ভাষাগুলিতে ফাংশন পয়েন্টার / ল্যাম্বডাস এবং উচ্চতর অর্ডার ফাংশনগুলি সমর্থন করে): হ্যান্ডলার ফাংশনে প্রশ্নে শনাক্তকারীদের ম্যাপিং। এটি উদাঃ সিতে পাওয়া যায় যা কোন ওও ভাষা নয় এবং সি # যা *, তবে জাভাতে (এখনও) নয় যা ওও খুব *।
কিছু পদ্ধতিগত ভাষায় (কোনও বহুবিজ্ঞান বা উচ্চ-ক্রমের ক্রিয়াকলাপ না থাকা) switch/ if-elseবিবৃতিগুলি এক শ্রেণির সমস্যা সমাধানের একমাত্র উপায় ছিল। অনেকগুলি বিকাশকারী, এই চিন্তাভাবনার অভ্যস্ত switchহয়ে ওও ভাষাগুলিতেও ব্যবহার চালিয়ে যান , যেখানে পলিমারফিজম প্রায়শই একটি ভাল সমাধান হয়। এ কারণেই প্রায়শই পলিমারফিজমের switchপক্ষে / রিফ্যাক্টর বক্তব্য এড়াতে বাঞ্ছনীয় ।
যে কোনও হারে, সেরা সমাধান সর্বদা ক্ষেত্রে নির্ভরশীল dependent প্রশ্নটি হল: কোন বিকল্পটি আপনাকে দীর্ঘমেয়াদে ক্লিনার, আরও সংক্ষিপ্ত, আরও রক্ষণাবেক্ষণযোগ্য কোড দেয়?
স্যুইচ স্টেটমেন্টগুলি প্রায়শই অনাবশ্যক হয়ে উঠতে পারে, কয়েক ডজন কেস করে রাখে, তাদের রক্ষণাবেক্ষণ কঠোর করে তোলে। যেহেতু আপনাকে তাদের একটি একক ফাংশনে রাখতে হবে, সেই ফাংশনটি বিশাল আকার ধারণ করতে পারে। যদি এটি হয় তবে আপনার কোনও মানচিত্র ভিত্তিক এবং / অথবা পলিমারফিক সমাধানের দিকে রিফ্যাকচারিং বিবেচনা করা উচিত।
যদি একই switchজায়গায় একাধিক জায়গায় পপআপ শুরু হয় তবে পলিমারফিজম সম্ভবত এই সমস্ত ক্ষেত্রে একত্রিত করার এবং কোডটি সহজ করার সর্বোত্তম বিকল্প। বিশেষ করে যদি ভবিষ্যতে আরও মামলা যুক্ত হওয়ার আশা করা হয়; প্রতিবার আপনার যত বেশি স্থান আপডেট করতে হবে তত ত্রুটির সম্ভাবনা রয়েছে। তবে, প্রায়শই পৃথক কেস হ্যান্ডলারগুলি এত সহজ থাকে, বা তাদের মধ্যে অনেকগুলি থাকে, বা এগুলি এতটা আন্তঃসম্পর্কিত হয় যে এগুলি একটি সম্পূর্ণ পলিমারফিক শ্রেণিবিন্যাসের মধ্যে সংশোধন করা ওভারকিল, বা ফলস্বরূপ প্রচুর সদৃশ কোড এবং / বা জঞ্জাল, ক্লাস শ্রেণিবদ্ধতা বজায় রাখা কঠিন। এই ক্ষেত্রে, এর পরিবর্তে ফাংশন / ল্যাম্বডাস ব্যবহার করা সহজ হতে পারে (যদি আপনার ভাষা আপনাকে অনুমতি দেয়)।
তবে, যদি আপনার switchএকক জায়গায় কিছু সমস্যা থাকে কেবল কয়েকটি সাধারণ কাজ, তবে এটি এটির মতো ছেড়ে দেওয়ার সেরা সমাধান হতে পারে।
* আমি এখানে "ওও" শব্দটি আলগাভাবে ব্যবহার করি; "আসল" বা "খাঁটি" ওও কী, তা নিয়ে আমি ধারণাগত বিতর্কে আগ্রহী নই।