تصحيح الكود المُنتج بالذكاء الاصطناعي
استراتيجيات التصحيح مع AI
عندما لا يعمل الكود المُنتج بالذكاء الاصطناعي، كيف تصححه بكفاءة؟ يغطي هذا الدرس استراتيجيات للتعاون الفعال بين الإنسان والـ AI في التصحيح.
شجرة قرار التصحيح
الكود لا يعمل
│
├─ هل تفهم ما يجب أن يفعله؟
│ ├─ لا → اطلب من AI شرح الكود أولاً
│ └─ نعم → استمر
│
├─ هل هناك رسالة خطأ؟
│ ├─ نعم → ابدأ بالخطأ
│ └─ لا → أضف تسجيل/تصحيح
│
├─ هل هو خطأ منطقي أم خطأ وقت التشغيل؟
│ ├─ منطقي → تتبع ذهنياً أو بالمصحح
│ └─ وقت التشغيل → تحقق من المدخلات ومعالجة الأخطاء
│
└─ هل يمكنك عزل المشكلة؟
├─ نعم → أصلح المشكلة المحددة
└─ لا → قسّمها لأجزاء أصغر
الاستراتيجية 1: نهج رسالة الخطأ
عندما يكون لديك خطأ، أعطِ AI كل شيء:
أحصل على هذا الخطأ:
TypeError: Cannot read properties of undefined (reading 'name') at getUserName (src/utils/user.ts:15:23)
هذا هو الكود ذو الصلة:
```typescript
export function getUserName(user: User): string {
return user.profile.name; // السطر 15
}
ما السبب وكيف أصلحه؟
## الاستراتيجية 2: إعادة الإنتاج الأصغر
اعزل الخطأ لأصغر حالة ممكنة:
هذا الكود يفشل بصمت:
async function fetchAndProcess() {
const items = await fetchItems();
const processed = items.map(processItem);
return processed;
}
عندما أسجل items، أحصل على المصفوفة المتوقعة.
عندما أسجل processed، أحصل على مصفوفة من Promises بدلاً من القيم.
لماذا لا يعمل هذا؟
## الاستراتيجية 3: البطة المطاطية مع AI
اشرح كودك لـ AI لتجد أخطاءك بنفسك:
سأشرح ما يجب أن يفعله هذا الكود. أخبرني إذا لاحظت أي مشاكل.
هذه الدالة يجب أن:
- تأخذ قائمة طلبات
- تجمّعها حسب معرف العميل
- تحسب إجمالي الإنفاق لكل عميل
- تُرجع العملاء مرتبين حسب الإنفاق الإجمالي
هذا تنفيذي:
[الصق الكود]
هل تنفيذي يطابق وصفي؟ أي حالات حدية أفتقدها؟
## الاستراتيجية 4: تصحيح الفرق
عندما كان الكود يعمل سابقاً والآن لا:
هذا الكود كان يعمل أمس. بعد تغييراتي، تعطل.
قبل (يعمل):
[الكود القديم]
بعد (معطل):
[الكود الجديد]
الخطأ هو: [رسالة الخطأ]
ما الذي كسرته؟
## الاستراتيجية 5: التصحيح بالسجلات
أضف تسجيلاً استراتيجياً وشاركه مع AI:
أضفت تسجيلاً لتصحيح هذه المشكلة. هذا ما أراه:
الكود:
async function processOrder(orderId: string) {
console.log('1. بدء processOrder:', orderId);
const order = await fetchOrder(orderId);
console.log('2. جلب الطلب:', order);
const validated = validateOrder(order);
console.log('3. التحقق:', validated);
}
مخرج وحدة التحكم:
1. بدء processOrder: abc123
2. جلب الطلب: { id: 'abc123', items: [...] }
3. التحقق: undefined
السجل يتوقف عند الخطوة 3 مع undefined. ما الخطأ في validateOrder؟
## متى تصحح بنفسك vs تسأل AI
### صحح بنفسك عندما:
- رسالة الخطأ واضحة
- المشكلة في كود تفهمه جيداً
- الإصلاح السريع واضح
- فرصة للتعلم
### اسأل AI عندما:
- رسالة الخطأ غامضة
- مكتبة أو نمط غير مألوف
- أسباب محتملة متعددة
- قضيت 15+ دقيقة عالقاً
## قالب تقرير الخطأ الفعال
```markdown
## المشكلة
[جملة واحدة تصف ما هو خطأ]
## السلوك المتوقع
[ما يجب أن يحدث]
## السلوك الفعلي
[ما يحدث فعلاً]
## رسالة الخطأ
[الخطأ الكامل مع تتبع المكدس]
## الكود
```typescript
[الكود ذو الصلة]
ما جربته
- [الشيء 1]
- [الشيء 2]
## أنماط مضادة لتجنبها
### لا تفعل: وصف مشكلة غامض
❌ "لا يعمل" ✅ "الدالة تُرجع undefined بدلاً من كائن المستخدم عندما ينجح استدعاء API"
### لا تفعل: سياق مفقود
❌ "أصلح هذا الخطأ: undefined is not a function" ✅ "أصلح هذا الخطأ: [+ تتبع المكدس + الكود + ما يُشغله]"
### لا تفعل: عدم قراءة الخطأ
❌ "لا أفهم هذا الخطأ، أصلحه" ✅ "هذا الخطأ يقول X. أعتقد أنه يعني Y. هل هذا صحيح؟ كيف أصلحه؟"
## نصائح احترافية
### 1. احفظ الخطأ
انسخ الخطأ الكامل قبل محاولة إصلاحه.
### 2. Git Stash قبل التصحيح
```bash
git stash # احفظ التغييرات الحالية
# صحح
git stash pop # استعد بعدها
3. استخدم عبارات Debugger
function problematicFunction(data) {
debugger; // توقف هنا في DevTools المتصفح
}
حقيقة التصحيح: جودة مساعدة تصحيح AI تتناسب طردياً مع جودة المعلومات التي تقدمها. كن محدداً، كن كاملاً، كن منهجياً.
الآن تعرف كيف تصحح الكود المُنتج بالـ AI بفعالية. في الوحدة 6، سنتعلم سير عمل المشاريع وأفضل الممارسات للـ vibe coding على نطاق واسع. :::