امنح قاعدة الكود الخاصة بك دستوراً

البنية البرمجية الموجودة في عقول المبرمجين لا تصمد أمام وكلاء البرمجة (coding agents).

لسنوات، عاشت قواعد قاعدة الكود كمعرفة متوارثة (tribal knowledge). كان كبار المهندسين يعرفون أي الطبقات يمكنها التواصل مع بعضها البعض، وكانوا يعرفون التبعيات المحظورة. أما المهندسون الجدد، فكانوا يتعلمون من خلال كسر الأشياء وتلقي التصحيحات أثناء المراجعات.

هذا الأسلوب يعمل مع البشر لأن البشر يبنون السياق بمرور الوقت، أما الوكلاء فلا يبنون سياقاً؛ فهم لا يعرفون إلا ما يمكنهم رؤيته.

إذا لم تُكتب القاعدة، سيعتقد الوكيل أنها غير موجودة. لقد رأيت وكلاء يربطون الطبقات الداخلية بالطبقات الخارجية، ويقدمون تبعيات كنا قد تجنبناها تحديداً. الكود يعمل، لكن البنية البرمجية تنحرف عن مسارها.

يجب عليك تحويل بنيتك البرمجية من مجرد موروث شعبي إلى قانون.

الدستور ليس توثيقاً. التوثيق يشرح كيف يعمل النظام اليوم، أما الدستور فيحدد ما يُسمح للنظام بأن يصبح عليه.

يجب أن يركز دستورك على الأشياء التي تصمد أمام عملية إعادة هيكلة (refactor) كبرى. يجب أن يتضمن:

  • القوانين والثوابت (invariants)
  • حدود النظام
  • الافتراضات التأسيسية

أفضل الدساتير هي القصيرة، والمقيدة، والبطيئة في التغيير.

لا تربط البنية البرمجية بهياكل المجلدات؛ فالمجلدات تتغير. اربط البنية بالمسؤوليات. يظل نموذج النطاق (domain model) نموذج نطاق بغض النظر عن المجلد الذي يوجد فيه.

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

والأهم من ذلك، يجب عليك فرض قوانينك.

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

إذا كانت القاعدة حاسمة، فلا تعتمد على النثر. ضعها في الـ CI الخاص بك، أو في linter، أو في validator.

كل قاعدة مهمة تحتاج إلى شكلين:

  • النسخة البشرية: تشرح القصد من القاعدة.
  • نسخة الآلة: تضمن الامتثال للقاعدة.

الأمر لا يتعلق بإضافة إجراءات معقدة، بل يتعلق بإضافة قوة تأثير (leverage). عندما تكون البنية البرمجية قابلة للفرض، فلن تحتاج إلى فحص كل قرار؛ فالآلة ستقوم بذلك نيابة عنك.

يمكنك تفويض المزيد من العمل عندما تثق في الحدود.

كيف تبدأ:

انتبه لمراجعاتك. في كل مرة تقول فيها "نحن لا نفعل ذلك لأن..."، فقد وجدت قانوناً.

ابدأ ببضعة قواعد:

  • اتجاه التبعية (Dependency direction)
  • التعامل مع الأسرار (Secret handling)
  • العقود الحاسمة (Critical contracts)
  • ملكية الحدود (Boundary ownership)

اكتب القاعدة. اكتب السبب. ثم أضف فحص الكود الذي يجعل كسرها مستحيلاً.

القانون بلا إنفاذ ليس سوى مجرد اقتراح.

المصدر: https://dev.to/miteshethos/give-your-codebase-a-constitution-3k4h

مجتمع تعليمي اختياري: https://t.me/GyaanSetuAi