# مشخصات درس‌نامه: بهبود ساختار کد، پاک‌سازی و ری‌فکتورینگ امن (Safe Refactoring) با هوش مصنوعی - **شناسه در سیلابس:** `L15.5` - **فصل:** فصل ۱۵: تکامل محصول با AI (Ch 15) - **نوع محتوا:** 📘 درس‌نامه متنی - **زمان تقریبی مطالعه:** ۱۸ دقیقه - **پیش‌نیازهای مستقیم:** `L15.4` (کالبدشکافی و کاوش در Codebase با ایجنت‌ها) --- ## ۱. اهداف یادگیری (Learning Objectives - Bloom's Taxonomy) دانشجو پس از مطالعهٔ این درس‌نامه باید بتواند: - [ ] **درک کند (Understand):** مفهوم ری‌فکتورینگ (Refactoring: اصلاح ساختار درونی بدون تغییر در رفتار بیرونی سیستم) را شرح دهد و بداند چرا کدهای شتاب‌زده MVP نیازمند بازطراحی و پاک‌سازی هستند. - [ ] **تحلیل/ارزیابی کند (Evaluate):** نشانه‌های بدبویی کد (Code Smells: کامپوننت‌های غول‌پیکر چندصدخطی، کدهای کپی-پیست تکراری، و تایپ‌های مجهول `any`) را در پروژه شناسایی و ارزیابی کند. - [ ] **به‌کار ببندد (Apply):** پروتکل ۴ مرحله‌ای ری‌فکتورینگ امن (سپر تست قبلی $\rightarrow$ پرامپت ایزوله اتمیک $\rightarrow$ بازبینی Diff $\rightarrow$ بیلد مجدد) را برای شکستن کامپوننت‌های بزرگ به ماژول‌های تمیز پیاده کند. - [ ] **ایجاد کند (Create):** یک کامپوننت ۳۰۰ خطی پنل مدیریت پورتفولیو را با هدایت ایجنت به ۴ ساب‌کامپوننت خوانا، ماژولار و تست‌پذیر تفکیک نماید. --- ## ۲. محدوده و مرزهای محتوا (Scope & Boundaries) ### آنچه باید پوشش داده شود (In-Scope): 1. **استعاره تمیزکاری و مرتب‌سازی ابزارهای کارگاه:** * در هنگام ساخت اولیه میخ‌ها و اره‌ها کف کارگاه می‌ریزند؛ پس از ساخت، ابزارها را روی دیوار می‌چینید تا در کارهای بعدی مانع پای شما نشوند. 2. **شکار «بوی بد کد» (Code Smells) در پروژه‌های ساخته‌شده با AI:** * بوی بد ۱: کامپوننت‌های خدای‌گونه (God Components)؛ یک فایل ۴۰۰ خطی که هم دیتابیس می‌خواند، هم فرم رندر می‌کند، هم مودال باز می‌کند و هم انیمیشن دارد! * بوی بد ۲: منطق تکراری کپی-پیست‌شده (Duplicate Queries)؛ نوشتن کوئری‌های یکسان سوپابیس در ۵ صفحه مختلف به جای یک تابع واحد. * بوی بد ۳: اعدام تایپ‌اسکریپت با کلمه `any`؛ تنبلی در تعریف تایپ داده‌ها که امنیت کد را از بین می‌برد. 3. **پروتکل ۴ مرحله‌ای ری‌فکتورینگ ایمن با ایجنت:** * مرحله ۱ (سپر دفاعی): اطمینان از پاس شدن تست‌های Vitest/Playwright و اجرای بیلد سالم قبل از هرگونه تغییر. * مرحله ۲ (پرامپت اتمیک ایزوله): درخواست جراحی محدود: «فقط این فایل را بشکن؛ به هیچ فایل دیگری دست نزن و نام Props را تغییر نده». * مرحله ۳ (بازبینی خط‌به‌خط Git Diff): بررسی اینکه آیا منطق یا استایلی ناخواسته حذف یا مفقود شده است یا خیر. * مرحله ۴ (تست تایید سلامت): اجرای مجدد تست‌ها و بیلد نهایی برای اطمینان از صفر بودن خطای پس‌رفتی. 4. **کارگاه عملی: جراحی و ماژولار کردن جدول مدیریت پروژه‌ها:** * تبدیل فایل متورم `AdminProjectsTable.tsx` به: - `ProjectRow.tsx` (رندر هر سطر) - `DeleteProjectDialog.tsx` (مودال حذف) - `ProjectStatusBadge.tsx` (بج وضعیت) - `hooks/useProjects.ts` (هوک اختصاصی مدیریت استیت‌ها). 5. **جعبه پرامپت طلایی برای ری‌فکتورینگ تمیز:** * پرامپت تخصصی بازنویسی با شرط حفظ ۱۰۰٪ رفتار قبلی. 6. **کال‌اوت‌های آموزشی و هشدار کوئرا:** * کال‌اوت بنفش (`
`): قانون طلایی مارتین فاولر؛ ری‌فکتورینگ نباید یک پروژه ۶ ماهه جداگانه باشد، بلکه عادتی پیوسته در حین اضافه کردن هر فیچر جدید است. * کال‌اوت سبز (`
`): لذت دیدن کدهای تمیز، خوانا و کوتاه که هر برنامه‌نویس ارشدی از دیدن آن شگفت‌زده می‌شود. * کال‌اوت قرمز (`
`): اشتباه فاجعه‌بار؛ هرگز به ایجنت نگویید: «کل پروژه را ریفکتور کن!»؛ این پرامپت به توهمات گسترده و شکستن کل برنامه‌ منجر می‌شود. ### آنچه نباید وارد آن شویم (Out-of-Scope): - مهاجرت از فریم‌ورکی به فریم‌ورک دیگر (مثلاً Next.js به Remix یا Vue). - بازطراحی کل اسکیمای دیتابیس که نیازمند از دست رفتن داده‌های پروداکشن باشد. --- ## ۳. مفاهیم کلیدی و کلمات تخصصی (Key Concepts & Terms) | اصطلاح انگلیسی | معادل فارسی مصوب | توضیح یک‌خطی ساده | | :--- | :--- | :--- | | Refactoring | بازنویسی و بهسازی ساختار | بهبود خوانایی، سادگی و نگهداری‌پذیری کدها بدون تغییر در عملکرد ظاهری آن‌ها | | Code Smell | نشانه‌های بدبویی کد | ساختارها و الگوهای نامناسب در کد که نشان‌دهنده نقص در طراحی یا پتانسیل بروز باگ در آینده هستند | | God Component | کامپوننت همه‌کاره غول‌پیکر | کامپوننتی تک‌افتاده که وظایف بیش از حد متعددی را بر عهده گرفته و فهم و نگهداری آن کابوس است | | Single Responsibility (SRP) | اصل تک‌مسئولیتی | اصل بنیادین مهندسی که می‌گوید هر ماژول یا کامپوننت فقط و فقط باید یک وظیفه مشخص داشته باشد | | Atomic Refactoring | بازنویسی اتمیک و دانه‌دانه | اصلاح پله‌پله و ایزوله بخش‌های کوچک کد برای پیشگیری از بروز خطاهای آبشاری در پروژه | --- ## ۴. جایگاه‌های تصاویر و نمودارها (Visual & Diagram Placeholders) > **راهنمای ایجنت نویسنده:** تمام تصاویر باید در پوشهٔ `images/` ذخیره شده و در جدول تک‌خانه‌ای وسط‌چین درج شوند: 1. **تصویر کاور درس:** `images/cover.png` * **موضوع:** سیم‌پیچی‌های آشفته و گره‌خورده دیجیتال که توسط بازوهای نوری ایجنت باز شده و به کابل‌های مرتب و موازی درخشان تبدیل می‌شوند. 2. **شکستن یک کامپوننت غول‌پیکر به ماژول‌های تمیز:** `images/god-component-decomposition.png` * **موضوع:** دیاگرام ساختاری: فایل ۴۰۰ خطی بزرگ در چپ $\rightarrow$ فلش بازطراحی $\rightarrow$ تفکیک به ۴ فایل کوچک، هوک و کامپوننت مستقل در راست. 3. **چرخه ۴ مرحله‌ای ری‌فکتورینگ امن:** `images/safe-refactoring-loop.png` * **موضوع:** فلوچارت محافظتی: تست سبز قبلی $\rightarrow$ پرامپت ایزوله $\rightarrow$ بررسی Git Diff $\rightarrow$ راستی‌آزمایی با بیلد موفق. 4. **تفاوت Git Diff یک ری‌فکتور موفق:** `images/refactored-git-diff-view.png` * **موضوع:** اسکرین‌شات از نمایش خطوط پاک‌شده اضافه و جایگزینی با ایمپورت‌های ماژولار و بسیار کوتاه. --- ## ۵. بخش‌بندی و ساختار محتوایی پیشنهادی درس‌نامه (`README.md`) 1. **تیتر اصلی:** `# بهبود ساختار کد، پاک‌سازی و ری‌فکتورینگ امن (Safe Refactoring) با هوش مصنوعی` 2. **مقدمه:** کدهایتان کار می‌کند، اما شبیه یک کمد لباس به هم ریخته است که هر بار درش را باز می‌کنید چیزی روی سرتان می‌افتد؟ وقت یک خانه‌تکانی لذت‌بخش مهندسی است! 3. **جدول کاور درس** 4. **تعریف ری‌فکتورینگ: تغییر لباس بدون تغییر ماهیت:** * چرا کاربر نباید هیچ تفاوتی در ظاهر حس کند، اما شما در توسعه آینده ۱۰ برابر سریع‌تر می‌شوید. 5. **شکار ۳ بوی بد رایج در پروژه‌های وایب کدینگ:** * کامپوننت‌های همه‌کاره (God Components)، کدهای تکراری، و فرار از تایپ‌های دقیق. 6. **پروتکل ۴ مرحله‌ای جراحی امن کد:** * تست سلامت $\rightarrow$ پرامپت اتمیک $\rightarrow$ کنترل گیت‌دیف $\rightarrow$ تایید نهایی با بیلد. 7. **مطالعه موردی: جراحی جدول ۴۰۰ خطی پنل مدیریت پورتفولیو:** * تفکیک عملی به ساب‌کامپوننت‌های `ProjectRow`, `DeleteDialog` و ساخت هوک `useProjects`. 8. **جعبه پرامپت طلایی: ری‌فکتورینگ اتمیک با ایجنت هوش مصنوعی:** * پرامپت دقیق: > «من می‌خواهم فایل `AdminProjectsTable.tsx` را ری‌فکتور کنم. بدون تغییر در هیچ‌یک از قابلیت‌های فعلی و بدون تغییر نام Props، ۱) این فایل را به ۳ کامپوننت تک‌مسئولیتی در پوشه `components/admin/` تقسیم کن، ۲) منطق مدیریت وضعیت‌ها را به یک کاستوم هوک در `hooks/useProjects.ts` منتقل کن، و ۳) تایپ‌های دقیق تایپ‌اسکریپت بدون استفاده از any برای آن بنویس.» 9. **باکس نکته Quera (`
`):** استفاده از تکنیک Boy Scout Rule: «کدبیس را همیشه تمیزتر از آنچه تحویل گرفته‌اید تحویل دهید». 10. **باکس هشدار Quera (`
`):** هرگز فیچر جدید را همزمان با ریفکتورینگ کد قبلی ننویسید! این دو کار باید در دو کامیت کاملاً مجزا انجام شوند تا در صورت بروز باگ، تفکیک امکان‌پذیر باشد. 11. **باکس رضایت‌بخش Quera (`
`):** باز کردن فایل اصلی پروژه و دیدن کاهش حجم کد از ۴۰۰ خط به ۵۰ خط بسیار تمیز و سازمان‌یافته. 12. **جمع‌بندی درس‌نامه:** مجهز شدن به سلاح پاک‌سازی کد؛ ورود به جهان هیجان‌انگیز قابلیت‌های پیشرفته هوش مصنوعی (Semantic Search و خلاصه‌سازها) در درس بعدی. --- ## ۶. معیارهای پذیرش (Acceptance Criteria for Reviewer) - [ ] مفهوم ری‌فکتورینگ و چرایی اهمیت آن در پروژه‌های فعال تبیین شود. - [ ] نشانه‌های بدبویی کد (Code Smells) با مثال‌های ملموس پورتفولیو شرح داده شوند. - [ ] پروتکل ۴ مرحله‌ای ری‌فکتورینگ امن به همراه پرامپت‌های اتمیک ارائه گردد. - [ ] کارگاه عملی شکستن کامپوننت بزرگ به کامپوننت‌های ماژولار در متن درس گنجانده شود.