លំនាំដែលគួរជៀសវាង

កំហុសភាគច្រើនកើតឡើងនៅពេលលាយគំរូបែប imperative និង declarative។ រក្សាព្រំដែនស្ថានភាពឲ្យតឹងរឹង។

លាយ push/pop ជាមួយ pages

កុំហៅ Navigator.push/pop សម្រាប់ stack ដែល List<PageEntry> គ្រប់គ្រងរួចហើយ។

Widget ក្នុង state

កុំដាក់ Widget instances ចូលក្នុង metadata របស់ page។ រក្សាទុកតែ keys និង identifier ស្រដៀង route ប៉ុណ្ណោះ។

Key ស្ទួន

កុំប្រើ PageEntry.key ស្ទួននៅក្នុង stack ដូចគ្នា។

បញ្ជីពិនិត្យការបម្លែង

ប្រើ checklist នេះនៅពេល review refactor ដើម្បីរក្សាស្ថាបត្យកម្មឲ្យស្ថិតស្ថេរ។

បញ្ជីពិនិត្យ

ល្អ vs មិនល្អ

// មិនល្អ: លាយ imperative និង declarative សម្រាប់ stack ដូចគ្នា
Navigator.of(context).push(...);
_pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];

// ល្អ: បច្ចុប្បន្នភាពតែស្ថានភាព declarative ប៉ុណ្ណោះ
setState(() {
  _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')];
});
គន្លឹះសម្រាប់ Review

ក្នុងពេល code review, តាមដាន ម្ចាស់ការផ្លាស់ប្ដូរ stack ហើយបដិសេធការផ្លាស់ប្ដូរដែលបម្លែង stack ដូចគ្នាតាម APIs ច្រើន។