تصحيح الكود المُنتج بالذكاء الاصطناعي

الأخطاء الشائعة وكيفية إصلاحها

5 دقيقة للقراءة

مساعدي البرمجة بالذكاء الاصطناعي يرتكبون أخطاء متوقعة. معرفة هذه الأنماط تساعدك على اكتشاف وإصلاح المشاكل بسرعة.

الفئة 1: أخطاء معالجة البيانات

خطأ: تحليل JSON غير آمن

// مُنتج بالـ AI
function loadConfig(): Config {
  const data = fs.readFileSync('config.json', 'utf-8');
  return JSON.parse(data);
}

المشاكل:

  • الملف قد لا يكون موجوداً
  • الملف قد لا يكون JSON صالح
  • لا تحقق من النوع في وقت التشغيل

الإصلاح:

import { z } from 'zod';

const ConfigSchema = z.object({
  apiKey: z.string(),
  port: z.number(),
  debug: z.boolean().default(false),
});

function loadConfig(): Config {
  try {
    const data = fs.readFileSync('config.json', 'utf-8');
    return ConfigSchema.parse(JSON.parse(data));
  } catch (error) {
    if (error instanceof z.ZodError) {
      throw new Error(`إعداد غير صالح: ${error.message}`);
    }
    throw new Error('فشل في تحميل ملف الإعداد');
  }
}

خطأ: افتراض وجود عناصر المصفوفة

// مُنتج بالـ AI
function getFirstUser(users: User[]): string {
  return users[0].name;
}

الإصلاح:

function getFirstUser(users: User[]): string | null {
  return users[0]?.name ?? null;
}

الفئة 2: أخطاء Async/Promise

خطأ: نسيان Await

// مُنتج بالـ AI
async function processData() {
  const data = fetchData();  // await مفقود!
  return transform(data);
}

الإصلاح:

async function processData() {
  const data = await fetchData();
  return transform(data);
}

خطأ: forEach مع Async

// مُنتج بالـ AI
async function sendEmails(users: User[]) {
  users.forEach(async (user) => {
    await sendEmail(user.email);
  });
  console.log('تم إرسال جميع الإيميلات');  // كذب! لم تنتهِ فعلاً
}

الإصلاح:

async function sendEmails(users: User[]) {
  await Promise.all(users.map(user => sendEmail(user.email)));
  console.log('تم إرسال جميع الإيميلات');
}

الفئة 3: أخطاء إدارة الحالة

خطأ: Closure قديم

// مُنتج بالـ AI (React)
function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => {
      setCount(count + 1);  // يستخدم دائماً القيمة الأولية!
    }, 1000);
    return () => clearInterval(interval);
  }, []);

  return <div>{count}</div>;
}

الإصلاح:

function Counter() {
  const [count, setCount] = useState(0);

  useEffect(() => {
    const interval = setInterval(() => {
      setCount(prev => prev + 1);  // استخدم دالة التحديث
    }, 1000);
    return () => clearInterval(interval);
  }, []);

  return <div>{count}</div>;
}

الفئة 4: أخطاء الأمان

خطأ: كشف البيانات الحساسة في السجلات

// مُنتج بالـ AI
async function login(email: string, password: string) {
  console.log(`محاولة تسجيل دخول: ${email}, ${password}`);  // لا تسجل كلمات المرور أبداً!
}

خطأ: عدم تنظيف المدخلات بشكل صحيح

// مُنتج بالـ AI
app.get('/search', (req, res) => {
  const query = req.query.q;
  res.send(`<h1>نتائج: ${query}</h1>`);  // XSS!
});

الإصلاح:

import { escape } from 'html-escaper';

app.get('/search', (req, res) => {
  const query = escape(req.query.q || '');
  res.send(`<h1>نتائج: ${query}</h1>`);
});

الفئة 5: أخطاء الأداء

خطأ: استعلام N+1

// مُنتج بالـ AI
async function getPostsWithAuthors() {
  const posts = await db.post.findMany();
  return Promise.all(
    posts.map(async (post) => ({
      ...post,
      author: await db.user.findUnique({ where: { id: post.authorId } }),
    }))
  );
}

الإصلاح:

async function getPostsWithAuthors() {
  return db.post.findMany({
    include: { author: true },
  });
}

مرجع سريع: أنماط إصلاح الأخطاء

نوع الخطأ نمط AI الإصلاح
await مفقود const x = asyncFn() const x = await asyncFn()
forEach async arr.forEach(async ...) await Promise.all(arr.map(...))
Closure قديم setCount(count + 1) setCount(prev => prev + 1)
تغيير المصفوفة arr.sort() [...arr].sort()
وصول null obj.prop.value obj?.prop?.value
XSS ${userInput} في HTML escape(userInput)
حقن SQL Template literals استعلامات مُعاملة

حكمة الأخطاء: معظم أخطاء AI تقع في عدد صغير من الفئات. تعلم هذه الأنماط، وستلتقطها في ثوانٍ.

في الدرس التالي، سنغطي استراتيجيات التصحيح ومتى تطلب المساعدة من AI. :::

اختبار

الوحدة 5: تصحيح الكود المُنتج بالذكاء الاصطناعي

خذ الاختبار