هيكل توليد الكود

كتابة TESTS و FORMAT

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

TESTS block بيعمل حاجتين في نفس الوقت. بيقول للموديل يعني إيه "صح"، وبيديك دليل قابل للتنفيذ لما الإجابة تيجي. لو سيبته، إنت بتثق في الإحساس بس.

TESTS block كويس بيحط 3–5 cases محددة. كل case بيسمّي input، expected output، و — ضمنياً — الخاصية اللي بتتختبر. مش محتاج pytest scaffolding؛ assert كافي.

قارن المحاولتين دول:

Tests ضعيف:

Include some test cases.

Tests قوي:

Include 4 assert test cases inside an if __name__ == "__main__": block: 1. Empty list returns []. 2. Single-item list returns the same list. 3. ["a","b","a","c","b"] returns ["a","b","c"]. 4. Case-sensitivity: ["Apple","apple","Apple"] returns ["Apple","apple"].

النسخة القوية بتعمل اللي unit test المفروض يعمله: بتغطّي edge case (فاضي)، degenerate case (item واحد)، happy path، وسلوك الـ case-sensitivity من CONSTRAINTS. كل سطر خاصية واحدة لازم الـ function تحققها.

النمط: خاصية واحدة لكل assert. خاصيتين في assert واحد ومش هتعرف أنهي واحدة فشلت. تلاتة وفي يوم الـ test هيعدّي لسبب غلط.

شكل TESTS block قوي، متخطّط للتغطية:

بلوك TESTS بـ 4 asserts، خاصية واحدة في كل سطر

حالة حدّية
حالة متدهورة
المسار العادي
خاصية من القيود

FORMAT هو أبسط block، بس أكتر واحد المهندسين بيـskipوه. بيتحكم في الـ envelope حوالين الإجابة، مش الإجابة نفسها. من غيره، الموديل بيلف الـ function بتاعتك في markdown explanations، alternative implementations، وكلام ودود بيكسر workflows اللصق-في-ملف.

الـ format directives دي شغّالة كويس:

Directiveبيعمل إيه
Output ONLY a single code block.بيشيل الـ prose حوالين الكود.
No markdown fences.لما عايز تـpipe لملف على طول.
No prose, no comments.لما عايز body الـ function بس.
Wrap in unified diff format.لـ workflows اللصق-في-Cursor (module 5).

كلمة عن كتابة "ONLY" بحروف كابيتال: دي عادة تستاهل، بس اعتبرها تأكيد للبني آدم اللي بيقرا الـ prompt، مش رافعة موثّقة على الموديل. مفيش شركة بتنشر قاعدة إن الحروف الكبيرة بتتوزن أتقل، والكلام ده بيتداول من غير مصدر. اللي موثّق كويس هو السلوك اللي بتدفع عكسه — موديلات المساعدة متظبّطة إنها تبقى helpful، والـ helpfulness عادةً معناها إنها تتبرّع بسياق ما طلبتهوش. FORMAT هي أداتك عشان تقفل ده. ولو قيد الـ format مش صامد، الحل اللي بيشتغل إنك تقوله بتحديد أكتر ("بلوك Python واحد وخلاص")، مش بصوت أعلى.

الأربع blocks مع بعض معناها إن الـ function هتيجي جاهزة للـ commit. في الدرس الجاي هتشوفهم متطبّقين على نفس مهمة dedupe اللي فشلت في الدرس الأول — والفرق بين سما وأرض.

التالي: المثال العملي. :::

اختبار

الوحدة 1: الـ Skeleton الرباعي للكود

خذ الاختبار
هل كان هذا الدرس مفيدًا؟

سجّل الدخول للتقييم