এড়িয়ে চলার অ্যান্টি-প্যাটার্নসমূহ

বেশিরভাগ বাগ ঘটে যখন ইম্পেরেটিভ এবং ডিক্লারেটিভ মডেল মিশে যায়। স্টেটের জন্য কঠোর সীমানা বজায় রাখুন।

পেজের সঙ্গে 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 দিয়ে বদলে দেয়।

পূর্ববর্তী

ওভারলে

পরবর্তী

ভূমিকা