এড়িয়ে চলার অ্যান্টি-প্যাটার্নসমূহ
বেশিরভাগ বাগ ঘটে যখন ইম্পেরেটিভ এবং ডিক্লারেটিভ মডেল মিশে যায়। স্টেটের জন্য কঠোর সীমানা বজায় রাখুন।
পেজের সঙ্গে push/pop মেশানো
যেসব স্ট্যাক ইতিমধ্যেই `List<PageEntry>` দ্বারা নিয়ন্ত্রিত, সেগুলোর জন্য `Navigator.push`/`pop` ডাকবেন না।
স্টেটে Widget
পেজ মেটাডেটার মধ্যে `Widget` ইনস্ট্যান্স রাখবেন না। শুধু কী এবং রুট-সদৃশ শনাক্তকারী রাখুন।
অসীম কী
একই স্ট্যাকে ডুপ্লিকেট `PageEntry.key` মান পুনরায় ব্যবহার করবেন না।
মাইগ্রেশন চেকলিস্ট
আর্কিটেকচার সামঞ্জস্যপূর্ণ রাখতে রিফ্যাক্টর পর্যালোচনার সময় এই চেকলিস্টটি ব্যবহার করুন।
চেকলিস্ট
ভালো বনাম খারাপ
// খারাপ: একই স্ট্যাকের জন্য ইম্পেরেটিভ এবং ডিক্লারেটিভ মিশিয়ে ফেলা
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
// ভালো: শুধু ডিক্লারেটিভ স্টেট আপডেট করুন
setState(() {
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
রিভিউ টিপ
কোড রিভিউয়ের সময় খেয়াল রাখুন স্ট্যাক পরিবর্তনের দায়িত্ব কার এবং এমন পরিবর্তন বাতিল করুন যা একই স্ট্যাককে একাধিক API দিয়ে বদলে দেয়।