وحدة 4 / 12

مراجعة الكود وإعادة الهيكلة والديون الفنية

المكاسب:

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

في هندسة البرمجيات، تتم قراءة التعليمات البرمجية أكثر بكثير مما تتم كتابتها. تتم كتابة سطر من التعليمات البرمجية مرة واحدة، ولكن تتم قراءته وتعديله وبناءه عشرات المرات على مدار أشهر. ولهذا السبب فإن مراجعة التعليمات البرمجية (مراجعة التعليمات البرمجية الخاصة بشخص آخر أو التعليمات البرمجية الخاصة بك من حيث المنطق وسهولة القراءة والأمان) وإعادة البناء (تحسين بنية التعليمات البرمجية دون تغيير سلوكها) هي جوهر الهندسة. يصبح الذكاء الاصطناعي "عينًا ثانية" قوية لهاتين المهمتين: فهو يقترح بسرعة سهولة القراءة، ويشير إلى المشكلات المنطقية والأمنية التي تم التغاضي عنها، ويقسم عملية إعادة الهيكلة الكبيرة إلى خطوات آمنة أصغر. ولكن هناك قاعدة حاسمة: إعادة الهيكلة لا ينبغي أن تغير السلوك، والشيء الوحيد الذي يضمن ذلك هو الاختبار.

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

المفاهيم: الدين الفني: قرارات التعليمات البرمجية المتخذة اليوم للسرعة التي تجعل الصيانة صعبة في المستقبل. رائحة الكود: الأنماط التي لا تعتبر أخطاء في حد ذاتها ولكنها تشير إلى مشاكل (وظائف طويلة جدًا، تعليمات برمجية متكررة). الانحدار: عندما يكسر التغيير شيئًا كان يعمل سابقًا.

استخدام الذكاء الاصطناعي في مراجعة التعليمات البرمجية المنظمة

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

  1. إعطاء النطاق. ما هو الكود، وماذا تفعل، وفي أي سياق يعمل.
  2. حدد محور الأولوية. الدقة والأمان أولاً، وسهولة القراءة ثانياً.
  3. اطلب تصحيحًا ملموسًا. "لماذا المشكلة" و"الحل الموصى به" لكل نتيجة.
  4. يمكنك التحقق من النتائج. وينتج الذكاء الاصطناعي أيضًا نتائج إيجابية كاذبة؛ تحقق من كل نتيجة مقابل الكود والاختبار.

مطالبة المراجعة المنظمة: "افحص الوظيفة التالية مثل أحد كبار المهندسين. قم بإدراج النتائج حسب الأهمية ووضع علامة عليها باستخدام هذه العلامات: المنطق/الأمان [الحرج]، حالة/أداء الحافة [متوسط]، إمكانية القراءة/الاسم [منخفض]. لكل نتيجة: لماذا تسأل، اقتراح إصلاح ملموس. لا تتخطى مشكلات التنسيق/المسافة البادئة، ستتعامل معها الأداة الآلية. الكود: [كود]"

مطالبة المراجعة التي تركز على الأمان: "راجع هذا الرمز لأغراض أمنية فقط: عدم التحقق من صحة الإدخال، وخطر الحقن، وعدم التحكم في الترخيص، وتسرب المعلومات السرية، والافتراضيات غير الآمنة. أضف مثالاً لسيناريو الهجوم إلى كل نتيجة. إذا لم تكن هناك مشكلة أمنية، فاذكر بوضوح "لم أجد أي مشكلات أمنية حرجة". الكود: [الكود]"

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

إعادة البناء المحفوظة بالاختبار

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

  1. وضع السلوك الحالي على المحك. بخلاف ذلك، اطلب من الذكاء الاصطناعي إنتاج "اختبار التوصيف" (اختبار يلتقط السلوك الحالي كما هو).
  2. إصلاحه في خطوات صغيرة. يجب أن يظل الاختبار باللون الأخضر في كل خطوة.
  3. قم بتشغيله بعد كل خطوة. قبض على الانحدار في وقت مبكر.

مطالبة بخطة إعادة البناء الآمنة: "الوظيفة التالية المكونة من 60 سطرًا تؤدي الكثير من العمل ومن الصعب قراءتها. أريد إعادة هيكلتها دون تغيير سلوكها. أولاً: قم بإدراج حالات الاختبار التي أحتاجها لتأمين السلوك الحالي. ثم: قم بتقسيم إعادة البناء إلى خطوات صغيرة، يمكن تنفيذ كل منها عندما تكون الاختبارات خضراء. لا تكتب الكود بعد، قدم الخطة أولاً. الكود: [رمز]"

موجه ضعيف / موجه قوي

ضعيف: "اجعل هذا الرمز أفضل." (النتيجة: غير واضح ما يجب تحسينه؛ يقوم الذكاء الاصطناعي بإجراء تغييرات عشوائية، ويمكنه تغيير السلوك بصمت.) قوي: "أعد صياغة وظيفة حساب الدفع هذه لسهولة القراءة. القيد: يجب أن يظل السلوك كما هو تمامًا، ويجب ألا تتغير قيم الإرجاع. قم بتقسيم الوظيفة الطويلة إلى وظائف فائدة ذات معنى، وزيادة الأرقام السحرية إلى ثوابت مسماة. قم بإدراج التغييرات عنصرًا تلو الآخر واشرح لماذا لا يغير كل عنصر السلوك. الكود: [رمز]"

تنص المطالبة القوية بوضوح على أن "السلوك يجب أن يظل كما هو تمامًا" وما يحتاج إلى تحسين. وبدون هذا القيد، يستطيع الذكاء الاصطناعي تغيير المنطق باسم "التحسين" وإنتاج تراجع صامت.

إدارة الديون الفنية

النهج

على المدى القصير

على المدى الطويل

تجاهل الديون

تقدم سريع

شلل الصيانة، وتباطؤ الفريق

أعد كتابة كل شيء

تطوير الميزة الدائمة

عوائد غير مؤكدة ومخاطر عالية

إعادة هيكلة مُقاسة ومحمية بالاختبار

تباطؤ طفيف

السرعة المستدامة

الطريقة الأكثر صحة هي الطريقة الثالثة: جعل الدين مرئيًا (تتبعه في قائمة)، والبدء من حيث الأكثر إيلامًا، واختبار كل حل. يعد الذكاء الاصطناعي بمثابة مساعدة جيدة في تحديد بنود الديون وترتيب أولوياتها، ولكن تحديد الدين الذي يجب سداده هو قرار تجاري.

حالات صغيرة

الحالة 1 - الانحدار الصامت. يطلب أحد المطورين من الذكاء الاصطناعي "تبسيط هذه الوظيفة"؛ يترجم الذكاء الاصطناعي الشرط بشكل غير صحيح ويتعطل حساب الإرجاع. نظرًا لعدم وجود اختبار، يحدث الخطأ بعد 3 أسابيع مع شكوى العميل. يقوم الفريق بنفس المهمة عن طريق كتابة اختبار التوصيف أولاً ثم اكتشاف الخطأ باختبار أحمر في الجولة الأولى.

الحالة 2 – العين الثانية المفيدة. في مراجعة التعليمات البرمجية، يدرك الذكاء الاصطناعي أن ترخيص المستخدم يتم التحقق منه فقط في الواجهة وليس على الخادم. هذه ثغرة أمنية في الوصول غير المصرح به. يضيف المهندس التحقق من الترخيص من جانب الخادم؛ يمنع فحص الذكاء الاصطناعي وقوع حادث أمني فعلي.

الحالة 3 - إيجابية كاذبة. يقول الذكاء الاصطناعي "لم يتم استخدام هذا المتغير أبدًا، احذفه"؛ ومع ذلك، يتم استخدامه بشكل غير مباشر من خلال آلية الانعكاس المتغير. إذا لم يتحقق المهندس من صحة الاقتراح مقابل الاختبار، فسيتم حذفه وسيحدث خطأ في وقت التشغيل. يجب تأكيد كل نتائج الذكاء الاصطناعي قبل التنفيذ.

الأخطاء الشائعة

  • إعادة البناء دون اختبار. لم يبق شيء لضمان الحفاظ على السلوك.
  • تطبيق نتائج الذكاء الاصطناعي دون التحقق من صحتها. تحدث الإيجابيات الكاذبة والسلبيات الكاذبة.
  • إضاعة الوقت البشري على مشاكل الشكل. إن التركيز على المهام التي يمكن حلها بواسطة الأدوات الآلية يلقي بظلاله على المخاطر الحقيقية.
  • أخذ الإجابة "لا مشكلة" كضمان. يستطيع الذكاء الاصطناعي تجاوز نقاط الضعف؛ المراجعة البشرية مطلوبة.
  • محاولة سداد كامل الدين دفعة واحدة. تعتبر عمليات إعادة الكتابة الرئيسية محفوفة بالمخاطر؛ ويفضل الخطوات التي يتم قياسها وحمايتها عن طريق الاختبار.

في ملخص

تحدد مراجعة الكود وإعادة البناء طول عمر الكود. يعد الذكاء الاصطناعي بمثابة العين الثانية ومولد الخطة القوي: حيث يوفر النتائج ذات الأولوية، والسيناريوهات الأمنية، وخطط إعادة الهيكلة ذات الخطوات الصغيرة. لكن إعادة الهيكلة لا ينبغي أن تغير السلوك، والاختبار فقط هو الذي يضمن ذلك. التحقق من صحة كل نتائج الذكاء الاصطناعي مقابل التعليمات البرمجية والاختبار؛ لا تأخذ إجابة "لا مشكلة" كدليل. اجعل الديون الفنية مرئية وقم بسدادها بخطوات محسوبة ومحمية بالاختبار.

مهمة التطبيق

خذ سطرًا من 40 إلى 70، وهي وظيفة معقدة إلى حد ما لديك (أو قمت بإنشاء الذكاء الاصطناعي). اتبع أولاً موجه المراجعة المنظمة وقم بفرز النتائج حسب [حرجة]/[متوسطة]/[منخفضة]؛ تحقق يدويًا من نتيجة واحدة على الأقل مقابل الكود. بعد ذلك، من خلال المطالبة بخطة إعادة الهيكلة الآمنة، قم أولاً بإنشاء اختبارات التوصيف وتشغيلها، ثم قم بتطبيق إعادة الهيكلة في خطوات صغيرة وتحقق من أن الاختبارات تظل خضراء في كل خطوة.

قائمة مرجعية

  • [ ] لقد قمت بتنظيم المراجعة باستخدام علامات الأولوية (حرجة/متوسطة/منخفضة).
  • [ ] لقد قمت بالتحقق من نتيجة واحدة على الأقل للذكاء الاصطناعي مقابل الكود/الاختبار.
  • [ ] لقد اختبرت السلوك الحالي قبل إعادة البناء.
  • [ ] لقد أجريت التغييرات في خطوات صغيرة وأجريت اختبارات في كل خطوة.
  • [ ] لقد حددت القيد "يجب أن يظل السلوك كما هو" في الموجه.
  • [ ] لقد أكدت أن النتائج الأمنية تتطلب تأكيدًا بشريًا.