هوش مصنوعی توسعه نرم‌افزار را متحول کرده است. این فصل تکنیک‌های پرامپت‌نویسی برای تولید کد، اشکال‌زدایی، بازبینی و گردش‌های کاری توسعه را پوشش می‌دهد.

<Callout type="info" title="هوش مصنوعی به عنوان شریک برنامه‌نویسی">
هوش مصنوعی در تولید کد، اشکال‌زدایی و مستندسازی عالی عمل می‌کند—اما همیشه کد تولیدشده را از نظر امنیت، صحت و قابلیت نگهداری بررسی کنید. هرگز کد هوش مصنوعی را بدون آزمایش مستقر نکنید.
</Callout>

## تولید کد

### بایدها و نبایدها: پرامپت‌های کد

<Compare 
  before={{ label: "❌ درخواست مبهم", content: "یک تابع برای اعتبارسنجی ایمیل بنویس." }}
  after={{ label: "✓ مشخصات کامل", content: "یک تابع Python بنویس که آدرس‌های ایمیل را اعتبارسنجی کند.\n\nورودی: string (ایمیل احتمالی)\nخروجی: tuple[bool, str | None] - (is_valid, error_message)\nمدیریت کن: رشته خالی، None، کاراکترهای یونیکد\nاز regex استفاده کن، type hints و docstring را شامل کن." }}
/>

### تولید تابع

<TryIt compact prompt={`یک تابع \${language:Python} بنویس که \${description:آدرس‌های ایمیل را اعتبارسنجی کند}.

الزامات:
- ورودی: \${inputTypes:string (ایمیل احتمالی)}
- خروجی: \${outputType:boolean و پیام خطای اختیاری}
- موارد حاشیه‌ای را مدیریت کن: \${edgeCases:رشته خالی، None، کاراکترهای یونیکد}
- عملکرد: \${performance:استاندارد}

شامل کن:
- Type hints/annotations
- Docstring با مثال‌ها
- اعتبارسنجی ورودی
- مدیریت خطا`} />

### تولید کلاس/ماژول

<TryIt compact prompt={`یک کلاس \${language:Python} برای \${purpose:مدیریت جلسات کاربر} ایجاد کن.

طراحی کلاس:
- نام: \${className:SessionManager}
- مسئولیت: \${responsibility:مدیریت چرخه حیات جلسه کاربر}
- ویژگی‌ها: \${properties:session_id, user_id, created_at, expires_at}
- متدها: \${methods:create(), validate(), refresh(), destroy()}

الزامات:
- از الگوی \${designPattern:Singleton} پیروی کن
- کپسوله‌سازی مناسب را شامل کن
- docstring های جامع اضافه کن
- مثال استفاده را شامل کن

آزمایش:
- اسکلت unit test را شامل کن`} />

### تولید API Endpoint

<TryIt compact prompt={`یک REST API endpoint برای \${resource:پروفایل‌های کاربر} ایجاد کن.

فریم‌ورک: \${framework:FastAPI}
متد: \${method:GET}
مسیر: \${path:/api/users/{id}}

درخواست:
- Headers: \${headers:Authorization Bearer token}
- Body schema: \${bodySchema:برای GET کاربردی ندارد}
- Query params: \${queryParams:include_posts (boolean)}

پاسخ:
- موفقیت: \${successResponse:200 با آبجکت کاربر}
- خطاها: \${errorResponses:401 Unauthorized, 404 Not Found}

شامل کن:
- اعتبارسنجی ورودی
- بررسی احراز هویت
- مدیریت خطا
- ملاحظات rate limiting`} />

## اشکال‌زدایی

<Callout type="tip" title="اصل اشکال‌زدایی">
همیشه **رفتار مورد انتظار**، **رفتار واقعی** و **پیام خطا** (در صورت وجود) را شامل کنید. هرچه زمینه بیشتری ارائه دهید، هوش مصنوعی سریع‌تر می‌تواند علت اصلی را شناسایی کند.
</Callout>

### تحلیل باگ

<TryIt compact prompt={`این کد را اشکال‌زدایی کن. باید \${expectedBehavior:مجموع همه اعداد را برگرداند} اما در عوض \${actualBehavior:برای همه ورودی‌ها 0 برمی‌گرداند}.

کد:
\${code:کد خود را اینجا قرار دهید}

پیام خطا (در صورت وجود):
\${error:هیچ}

مراحل اشکال‌زدایی:
1. شناسایی کن که کد چه کاری می‌خواهد انجام دهد
2. اجرا را با ورودی داده‌شده دنبال کن
3. پیدا کن کجا رفتار مورد انتظار و واقعی از هم جدا می‌شوند
4. علت اصلی را توضیح بده
5. راه‌حل را با توضیح ارائه بده`} />

### تفسیر پیام خطا

<TryIt compact prompt={`این خطا را توضیح بده و نحوه رفع آن را بگو:

خطا:
\${errorMessage:پیام خطا یا stack trace را اینجا قرار دهید}

زمینه:
- زبان/فریم‌ورک: \${framework:Python 3.11}
- کاری که می‌خواستم انجام دهم: \${action:خواندن یک فایل JSON}
- کد مرتبط: \${codeSnippet:کد مرتبط را قرار دهید}

ارائه بده:
1. توضیح ساده خطا
2. علت اصلی
3. راه‌حل گام‌به‌گام
4. نحوه جلوگیری از این مشکل در آینده`} />

### اشکال‌زدایی عملکرد

<TryIt compact prompt={`این کد کند است. تحلیل و بهینه‌سازی کن:

کد:
\${code:کد خود را اینجا قرار دهید}

عملکرد فعلی: \${currentPerformance:برای 1000 آیتم 30 ثانیه طول می‌کشد}
عملکرد هدف: \${targetPerformance:زیر 5 ثانیه}
محدودیت‌ها: \${constraints:محدودیت حافظه 512MB}

ارائه بده:
1. شناسایی گلوگاه‌ها
2. توضیح بده چرا هر کدام کند است
3. بهینه‌سازی‌ها را پیشنهاد بده (رتبه‌بندی‌شده بر اساس تأثیر)
4. کد بهینه‌شده را نشان بده
5. بهبود را تخمین بزن`} />

## بازبینی کد

### بایدها و نبایدها: پرامپت‌های بازبینی کد

<Compare 
  before={{ label: "❌ درخواست کلی", content: "این کد را بررسی کن." }}
  after={{ label: "✓ معیارهای مشخص", content: "این کد را برای یک pull request بررسی کن.\n\nبررسی کن برای:\n1. صحت: باگ‌ها، خطاهای منطقی، موارد حاشیه‌ای\n2. امنیت: خطرات تزریق، مشکلات احراز هویت\n3. عملکرد: کوئری‌های N+1، نشت حافظه\n4. قابلیت نگهداری: نام‌گذاری، پیچیدگی\n\nفرمت: 🔴 بحرانی / 🟡 مهم / 🟢 پیشنهاد" }}
/>

### بازبینی جامع

<TryIt compact prompt={`این کد را برای یک pull request بررسی کن.

کد:
\${code:کد خود را اینجا قرار دهید}

بررسی کن برای:
1. **صحت**: باگ‌ها، خطاهای منطقی، موارد حاشیه‌ای
2. **امنیت**: آسیب‌پذیری‌ها، خطرات تزریق، مشکلات احراز هویت
3. **عملکرد**: ناکارآمدی‌ها، کوئری‌های N+1، نشت حافظه
4. **قابلیت نگهداری**: خوانایی، نام‌گذاری، پیچیدگی
5. **بهترین روش‌ها**: قراردادهای \${framework:Python/Django}

بازبینی خود را به این فرمت ارائه بده:
🔴 بحرانی: باید قبل از merge رفع شود
🟡 مهم: باید رفع شود
🟢 پیشنهاد: خوب است داشته باشیم
💭 سؤال: نیاز به توضیح`} />

### بازبینی امنیتی

<TryIt compact prompt={`یک بازبینی امنیتی از این کد انجام بده:

کد:
\${code:کد خود را اینجا قرار دهید}

بررسی کن برای:
- [ ] آسیب‌پذیری‌های تزریق (SQL، XSS، command)
- [ ] نقص‌های احراز هویت/مجوزدهی
- [ ] افشای داده‌های حساس
- [ ] وابستگی‌های ناامن
- [ ] مشکلات رمزنگاری
- [ ] شکاف‌های اعتبارسنجی ورودی
- [ ] مدیریت خطایی که اطلاعات افشا می‌کند

برای هر یافته:
- شدت: بحرانی/بالا/متوسط/پایین
- مکان: شماره خط یا تابع
- مشکل: توضیحات
- سوءاستفاده: چگونه می‌تواند مورد حمله قرار گیرد
- راه‌حل: اصلاح پیشنهادی`} />

## بازسازی

### شناسایی بوی کد

<TryIt compact prompt={`این کد را برای بوی کد و فرصت‌های بازسازی تحلیل کن:

کد:
\${code:کد خود را اینجا قرار دهید}

شناسایی کن:
1. متدهای طولانی (استخراج را پیشنهاد بده)
2. کد تکراری (بهبودهای DRY را پیشنهاد بده)
3. شرط‌های پیچیده (ساده‌سازی را پیشنهاد بده)
4. نام‌گذاری ضعیف (نام‌های بهتر پیشنهاد بده)
5. وابستگی تنگاتنگ (جداسازی را پیشنهاد بده)

برای هر مشکل، کد قبل/بعد را نشان بده.`} />

### اعمال الگوی طراحی

<TryIt compact prompt={`این کد را با استفاده از الگوی \${patternName:Factory} بازسازی کن.

کد فعلی:
\${code:کد خود را اینجا قرار دهید}

اهداف:
- \${whyPattern:جداسازی ایجاد آبجکت از استفاده}
- \${benefits:آزمایش و توسعه‌پذیری آسان‌تر}

ارائه بده:
1. توضیح الگو
2. چگونه اینجا اعمال می‌شود
3. کد بازسازی‌شده
4. مصالحه‌های قابل توجه`} />

## آزمایش

### تولید Unit Test

<TryIt compact prompt={`برای این تابع unit test بنویس:

تابع:
\${code:تابع خود را اینجا قرار دهید}

فریم‌ورک آزمایش: \${testFramework:pytest}

پوشش بده:
- مسیر موفق (ورودی‌های عادی)
- موارد حاشیه‌ای (خالی، null، مقادیر مرزی)
- موارد خطا (ورودی‌های نامعتبر)
- \${specificScenarios:دسترسی همزمان، ورودی‌های بزرگ}

فرمت: الگوی Arrange-Act-Assert
شامل کن: نام‌های توصیفی تست`} />

### تولید موارد تست

<TryIt compact prompt={`موارد تست برای این قابلیت تولید کن:

قابلیت: \${featureDescription:ثبت‌نام کاربر با تأیید ایمیل}
معیارهای پذیرش: \${acceptanceCriteria:کاربر می‌تواند ثبت‌نام کند، ایمیل دریافت کند، حساب را تأیید کند}

موارد تست را به این فرمت ارائه بده:

| شناسه | سناریو | فرض | وقتی | آنگاه | اولویت |
|-------|--------|-----|------|-------|--------|
| TC01 | ... | ... | ... | ... | بالا |`} />

## معماری و طراحی

### طراحی سیستم

<TryIt compact prompt={`یک سیستم برای \${requirement:برنامه چت بلادرنگ} طراحی کن.

محدودیت‌ها:
- بار مورد انتظار: \${expectedLoad:10,000 کاربر همزمان}
- الزامات تأخیر: \${latency:کمتر از 100 میلی‌ثانیه تحویل پیام}
- در دسترس بودن: \${availability:99.9%}
- بودجه: \${budget:متوسط، ترجیح منبع باز}

ارائه بده:
1. نمودار معماری سطح بالا (ASCII/متن)
2. توضیحات اجزا
3. جریان داده
4. انتخاب‌های فناوری با دلیل
5. استراتژی مقیاس‌پذیری
6. مصالحه‌ها و جایگزین‌های بررسی‌شده`} />

### طراحی Schema پایگاه داده

<TryIt compact prompt={`یک schema پایگاه داده برای \${application:پلتفرم تجارت الکترونیک} طراحی کن.

الزامات:
- \${feature1:حساب‌های کاربری با پروفایل‌ها و آدرس‌ها}
- \${feature2:کاتالوگ محصول با دسته‌بندی‌ها و انواع}
- \${feature3:سفارشات با آیتم‌ها و ردیابی پرداخت}

ارائه بده:
1. توضیح رابطه موجودیت‌ها
2. تعریف جداول با ستون‌ها و انواع
3. ایندکس‌ها برای کوئری‌های رایج
4. روابط کلید خارجی
5. نمونه کوئری‌ها برای عملیات‌های کلیدی`} />

## تولید مستندات

### مستندات API

<TryIt compact prompt={`مستندات API از این کد تولید کن:

کد:
\${code:کد endpoint خود را اینجا قرار دهید}

فرمت: \${format:OpenAPI/Swagger YAML}

شامل کن:
- توضیح endpoint
- schemaهای درخواست/پاسخ
- نمونه درخواست‌ها/پاسخ‌ها
- کدهای خطا
- الزامات احراز هویت`} />

### مستندات درون‌خطی

<TryIt compact prompt={`مستندات جامع به این کد اضافه کن:

کد:
\${code:کد خود را اینجا قرار دهید}

اضافه کن:
- docstring فایل/ماژول (هدف، استفاده)
- docstringهای تابع/متد (params، returns، raises، مثال‌ها)
- کامنت‌های درون‌خطی فقط برای منطق پیچیده
- type hints در صورت نبود

سبک: \${docStyle:Google}`} />

## قالب‌های پرامپت از prompts.chat

### نقش توسعه‌دهنده ارشد

```
می‌خواهم نقش یک توسعه‌دهنده ارشد نرم‌افزار را ایفا کنی. من کد 
ارائه می‌دهم و درباره آن سؤال می‌کنم. تو کد را بررسی می‌کنی، 
بهبودها پیشنهاد می‌دهی، مفاهیم را توضیح می‌دهی و به 
اشکال‌زدایی کمک می‌کنی. پاسخ‌هایت باید آموزنده باشد و به 
من کمک کند توسعه‌دهنده بهتری شوم.
```

### نقش بازبین کد

```
می‌خواهم نقش یک بازبین کد را ایفا کنی. من pull requestها 
با تغییرات کد ارائه می‌دهم و تو آن‌ها را به‌طور کامل بررسی 
می‌کنی. باگ‌ها، مشکلات امنیتی، مسائل عملکردی و پایبندی 
به بهترین روش‌ها را بررسی کن. بازخورد سازنده‌ای ارائه بده 
که به توسعه‌دهنده کمک کند پیشرفت کند.
```

### نقش معمار نرم‌افزار

```
می‌خواهم نقش یک معمار نرم‌افزار را ایفا کنی. من الزامات 
و محدودیت‌های سیستم را توصیف می‌کنم و تو معماری‌های 
مقیاس‌پذیر و قابل نگهداری طراحی می‌کنی. تصمیمات طراحی، 
مصالحه‌ها را توضیح بده و در صورت کمک، نمودار ارائه بده.
```

## یکپارچه‌سازی با گردش کار توسعه

### تولید پیام Commit

<TryIt compact prompt={`یک پیام commit برای این تغییرات تولید کن:

Diff:
\${diff:git diff را اینجا قرار دهید}

فرمت: Conventional Commits
نوع: \${commitType:feat}

ارائه بده:
- خط موضوع (حداکثر 50 کاراکتر، حالت امری)
- بدنه (چه و چرا، با شکستن خط در 72 کاراکتر)
- پاورقی (ارجاع به issueها در صورت کاربرد)`} />

### تولید توضیحات PR

<TryIt compact prompt={`توضیحات pull request تولید کن:

تغییرات:
\${changes:تغییرات خود را لیست کن یا خلاصه diff را قرار بده}

قالب:
## خلاصه
توضیح مختصر تغییرات

## تغییرات انجام‌شده
- تغییر 1
- تغییر 2

## آزمایش
- [ ] unit testها اضافه/به‌روزرسانی شد
- [ ] آزمایش دستی انجام شد

## تصاویر (اگر تغییرات UI)
placeholder

## Issueهای مرتبط
بسته می‌شود #\${issueNumber:123}`} />

## خلاصه

<Callout type="tip" title="تکنیک‌های کلیدی">
زمینه کامل (زبان، فریم‌ورک، محدودیت‌ها) را شامل کنید، الزامات را دقیقاً مشخص کنید، فرمت‌های خروجی مشخص درخواست کنید، توضیحات را همراه کد بخواهید و موارد حاشیه‌ای را برای مدیریت شامل کنید.
</Callout>

<Quiz 
  question="مهم‌ترین عنصری که هنگام درخواست اشکال‌زدایی کد از هوش مصنوعی باید شامل کنید چیست؟"
  options={[
    "فقط زبان برنامه‌نویسی",
    "رفتار مورد انتظار، رفتار واقعی و پیام خطا",
    "فقط قطعه کد",
    "نام فایل"
  ]}
  correctIndex={1}
  explanation="اشکال‌زدایی نیاز به زمینه دارد: چه باید اتفاق بیفتد در مقابل چه واقعاً اتفاق می‌افتد. پیام‌های خطا و stack trace به هوش مصنوعی کمک می‌کند مشکل دقیق را سریعاً شناسایی کند."
/>

هوش مصنوعی یک شریک قدرتمند برنامه‌نویسی است—از آن برای تولید، بازبینی، اشکال‌زدایی و مستندسازی استفاده کنید در حالی که قضاوت معماری خود را حفظ می‌کنید.
