Dart এমন একটি Programming Language যেখানে প্রতিটি ভ্যালুর টাইপ থাকে, even যখন আপনি টাইপটা স্পষ্ট করে বলছেন না তখনও। একজন Intermediate পর্যায়ের ডেভেলপার হিসেবে, Dart এর টাইপ সিস্টেম বুঝতে পারা অত্যন্ত গুরুত্বপূর্ণ—বিশেষ করে dynamic এবং Object নিয়ে কাজ করার সময়।
টাইপ সিস্টেম কী?
টাইপ সিস্টেম হলো একটি নিয়ম যা বলে কোন ভ্যালু কেমন টাইপের, এবং সেই টাইপে কোন কোন অপারেশন করা যাবে। Dart এ টাইপ চেকিং হয় দুইভাবে:
Compile-time এ (স্ট্যাটিক টাইপিং)
Run-time এ (ডাইনামিক টাইপিং)
Dart মূলত একটি স্ট্যাটিকলি টাইপড ভাষা হলেও dynamic ব্যবহার করে আপনি টাইপ সিস্টেমকে বাইপাস করতে পারেন।
dynamic: যখন টাইপ জানা থাকে না
dynamic টাইপ ব্যবহার করলে Dart কম্পাইলার আপনাকে কিছু বলবে না, আপনি যে টাইপের ভ্যালু চান সেটি বসাতে পারবেন। তবে সমস্যা হলো, ভুল টাইপ ব্যবহারের কারণে runtime-এ অ্যাপ ক্র্যাশ করতে পারে।
কখন ব্যবহার করবেন:
যখন আপনি API বা JSON থেকে টাইপ না জানা ডেটা পাচ্ছেন
জেনারিক ফাংশন বা হেল্পার লিখছেন
দ্রুত প্রোটোটাইপ তৈরি করতে চান
কখন এড়িয়ে যাবেন:
যখন টাইপ জানা থাকে
পারফরম্যান্স গুরুত্বপূর্ণ হলে
পাবলিক API লেখার সময়—কারণ ব্যবহারকারী টাইপ সেফটি হারিয়ে ফেলবে
উদাহরণ:
Object: সবচেয়ে উপরের ক্লাস
Object হলো Dart-এর সব non-null টাইপের মূল ক্লাস। আপনি চাইলে যেকোনো টাইপের ভ্যালু Object টাইপে রাখতে পারেন, তবে সেই টাইপের ফিচার সরাসরি ব্যবহার করতে পারবেন না।
কখন ব্যবহার করবেন:
যখন ভ্যালুর টাইপ আগে থেকে জানা নেই, কিন্তু পুরোপুরি "dynamic" হওয়া লাগবে না
ডেটা কালেকশন বা ফাংশনে যেকোনো ইনপুট নেওয়ার দরকার পড়ে
কখন এড়িয়ে যাবেন:
যদি টাইপ-ভিত্তিক মেথড ব্যবহার করতে চান
যখন সম্পূর্ণ ফ্লেক্সিবিলিটি দরকার (তখন dynamic বেটার)
উদাহরণ:
var, Object, আর dynamic তুলনা
ডিক্লারেশন
টাইপ চেকিং
টাইপ ইনফারেন্স
ব্যবহার
var
compile-time
হ্যাঁ
যখন টাইপ জানা বা অনুমেয়
Object
compile-time
না
সেফলি যেকোনো ভ্যালু রাখার জন্য
dynamic
runtime
না
সম্পূর্ণ ফ্লেক্সিবিলিটির জন্য
বাস্তব কেস: JSON রেসপন্স হ্যান্ডলিং
এপিআই থেকে যখন টাইপ-অনির্ধারিত JSON আসে, তখন অনেকেই dynamic ব্যবহার করেন।
খারাপ উদাহরণ:
ভালো উদাহরণ:
টিপস
করণীয়
পরামর্শ
dynamic সচেতনভাবে ব্যবহার করুন
শুধুমাত্র যখন দরকার
Object দিয়ে সেফলি টাইপহীন ভ্যালু নিন
ডেটা কালেকশনের জন্য ভালো
runtime টাইপ চেক করুন
ভুল টাইপে runtime error আটকাতে
API তে dynamic এড়িয়ে চলুন
ব্যবহারকারীর জন্য টাইপ নিশ্চিত করুন
var ইনফারেন্স ব্যবহার করুন
কোড পরিষ্কার ও কম ভুলের সম্ভাবনা
উপসংহার
Dart আপনাকে dynamic এবং Object এর মাধ্যমে শক্তিশালী ফ্লেক্সিবিলিটি দেয়। তবে এই ফ্লেক্সিবিলিটি যদি ভুলভাবে ব্যবহার করেন, তাহলে কোড হতে পারে ঝুঁকিপূর্ণ ও ধীরগতির।
যখন টাইপ জানা থাকে, var বা সুনির্দিষ্ট টাইপ ব্যবহার করুন