6.3 · ممارسات جيدة وفخاخ

المستوى 6 · في الممارسة

6.3ممارسات جيدة وفخاخ

الهدف: تثبيت المنعكسات الـ 10 التي تفصل شيفرة تعيش عن سكربت يُخشى.
الوقت المقدّر: 10 دقيقة · إذا كان لديك 5 دقائق فقط: اقرأ «الأساسي في 30 ثانية» + المخطط.

الأساسي في 30 ثانية

  • القاعدة الذهبية : مقروء (black)، ومثبت (pytest)، ومحمول (venv)، ومسلم (CI) — مطبقة دائماً، لا مرة واحدة.
  • للقيام : أسماء صريحة، وreturn ‏+ قيم افتراضية ثابتة، وwith ‏+ pathlib، و.get، وtry ضيقة، وvenv مثبت، واختبارات قبلاً، ومتجهة، وpre-commit، وCI حارسة.
  • للتجنب : أسماء مشفرة، وprint بدل return، ودمج +، وexcept عار، و.venv منسخ، وCI « لاحقاً »، وأسرار مكشوفة.

خيط نبيل — المعايير الملصقة على الجدار

بعد سنة، ألصق نبيل أربع كلمات على الجدار في الجزائر : مقروء، ومثبت، ومحمول، ومسلم. ما عدّ أكثر ليس مكتبة، بل ثلاث عادات — تسمية صريحة، واختبار قبلاً، وعزل في venv — وأكبر فخ نجا منه بأعجوبة : ‏.venv منسخ مع أسرار مكشوفة خلال أسبوع ضغط.

اختر عادة واحدة لتثبيتها في طقسك، ثم انتقل إلى التالية.

عقد الثقة

شيفرة سليمة تتمسك بقواعد قليلة، مطبقة دائماً. ها هي، مع عكوسها المحظورة.

✓ للقيام

  • أسماء صريحة (أفعال، وsnake_case)، ومسؤولية واحدة لكل دالة.
  • ‏return النتيجة، وقيم افتراضية ثابتة (None)، وبيانات في الوسائط.
  • ‏f-strings، وwith ‏+ ترميز، وpathlib للمسارات.
  • الحاوية المناسبة للاستعمال المناسب، و.get() مع قيمة افتراضية، ونسخ واعية.
  • ‏try ضيقة ودقيقة، وelse/finally، وraise مبكراً، وأبداً except عارية.
  • المعيار أولاً، وvenv ‏+ متطلبات مثبتة، واستيرادات مطلقة.
  • اختبارات قبلاً (أحمر-أخضر)، وحدود + أخطاء، وتلميحات عند الحدود.
  • اجعله متجهاً للضخم، وyield للعملاق، وasync للانتظار.
  • ‏black/ruff في pre-commit، وأنماط مسماة، وSOLID عملي.
  • ‏CI حارسة، ونسخ + تراجع، وأسرار خارج الشيفرة.

✗ للتجنب أبداً

  • أسماء مشفرة (x2، وtmp2، وdata2) ودوال من 200 سطر.
  • ‏print بدل return، وقيم افتراضية قابلة للتعديل، وعموميات معدلة.
  • دمج +، وopen() دون with، ومسارات مشفرة في الصلب.
  • قوائم للبحث بالمفتاح، ووصول مباشر دون get، و= للنسخ.
  • ‏except: pass، وtry حول كل شيء، وإسكات الأعطال.
  • كل شيء في العام، و.venv منسخ، وfrom x import *.
  • اختبارات بعد (أو أبداً)، والاسمي فقط، و100 % وثنية.
  • حلقات for على الملايين، وقوائم عملاقة، وrequests في async.
  • نمط يُناقش باليد، وكائنات-إله، ومصانع لـ 50 سطراً.
  • ‏CI « لاحقاً »، وأسرار مكشوفة، وإنتاج دون عودة.
خطأ شائع في الفهم: « تأشير كل الخانات يومياً ». خطأ. هذه عادات تُثبت واحدة واحدة : اختر واحدة (مثلاً اختبارات قبلاً في كل مكان)، وثبتها في طقسك، ثم انتقل إلى التالية.
نص المخطط (SEO / قارئات الشاشة / الترجمة): التوازن المطلوب : 1) جهة المقروء — أسماء صريحة، وreturn، وf-strings، وwith ‏+ pathlib، والحاوية المناسبة. 2) جهة المثبت — ‏try ضيقة، وvenv ‏+ متطلبات مثبتة، واختبارات قبلاً + تلميحات، ومتجهة/yield/async. ‏3) جهة المسلم — ‏black/ruff في pre-commit، وCI حارسة، ونسخ + تراجع، وأسرار خارج الشيفرة. الدرس : شيفرة مقروءة ومثبتة ومحمولة ومسلمة خير من سكربت لامع لا يُعاد تنفيذه أبداً.

نص جاهز للقول — التحقق من ممارستي قبل التسليم (30 ثانية)

« مقروء (black) ؟ مثبت (pytest اسمي + حدود) ؟ محمول (venv معاد بناؤه) ؟ مسلم (CI خضراء، وأسرار خارج الشيفرة) ؟ إن كان جواب لا، أصحح قبل التسليم. »

نموذج نسخ ولصق — دالة نظيفة (return، وقيمة افتراضية ثابتة، وpathlib)

from pathlib import Path


def charger_lignes(chemin: Path, lignes: list[str] | None = None) -> list[str]:
    lignes = [] if lignes is None else list(lignes)
    with chemin.open("r", encoding="utf-8") as f:
        lignes.extend(line.strip() for line in f)
    return lignes

شركة صغيرة جداً / ميزانية صغيرة

عادة واحدة في الفصل تكفي : ‏venv ‏+ اختبارات أولاً، والباقي بعدها.

شركة صغيرة ومتوسطة في الجزائر

تكييف الطقوس مع الذروات والتنقلات : موعد black ‏+ pytest معقود كل أسبوع.

عن بعد / هجين

الانضباط رقم 1 عن بعد : مراجعات مكتوبة وCI خضراء، حتى للتصحيحات الصغيرة.

بين الثقافات

التحقق من الاستعمالات المحلية بدل الافتراض : صيغة CSV غير معتادة يجب أن تنبه في كل مكان.

حذر: تذكير عام : الأسرار وبيانات المستخدمين تُحمّل منظمتك المسؤولية — أسرار خارج الشيفرة في متغيرات البيئة، و.venv لا يُنسخ أبداً، والمصادقة من المرجع المعين ؛ هذا الدليل لا يقدم رأياً قانونياً.

تحدي 48 ساعة — طبّق غداً

مرر سكربتك الرئيسي على الغربال : صفر except عارية، وصفر .venv منسخ، وصفر سر مكشوف. صحح أول فرق تجده.

قائمة الخروج من القسم
  • أعرف المنعكسات الـ 10 للقيام والفخاخ الـ 10 للتجنب.
  • تحققت من نقاطي الحرجة الـ 3 ‏(except، وvenv، والأسرار).
  • أنجزت تحدي 48 ساعة أو برمجت تاريخه.
تقييم ذاتي 1-5 : ثبات المنعكسات الجيدة ؟فخاخ مُتجنبة ؟
تحقّق من فهمك

قبل التسليم، يتحقق نبيل من ممارسته. أي منعكس يحميه أفضل ؟

💡

ألصق معايير المشروع الخيط الأحمر على الجدار : مقروء (black)، ومثبت (pytest)، ومحمول (venv)، ومسلم (CI).