هل يولد كود الذكاء الاصطناعي الخاص بك "قمامة"؟ (إليك كيفية إصلاح ذلك)
BBetter Stack
Computing/SoftwareManagementInternet Technology
Transcript
00:00:00اليوم، أريد التحدث عن CRAP. ولا، لا أقصد ذلك النوع من الـ CRAP. أنا أتحدث عن
00:00:05الاختصار، الذي يرمز إلى مؤشر أنماط مخاطر التغيير (Change Risk Anti-Patterns Index). وهو مصمم للعثور على
00:00:12الدوال الخطرة في الكود الخاص بك، والتي تكون شديدة التعقيد ولكنها سيئة الاختبار. إنه ليس
00:00:18مفهومًا جديدًا تمامًا، لكنه مفهوم جذب انتباهي مؤخرًا، بفضل حزمة أصدرها
00:00:24ألكسندر بروخورانكو تسمى Cargo CRAP، والتي تحدد هذه الدوال الرئيسية في كود لغة Rust.
00:00:31الفكرة الأصلية لمقياس CRAP تأتي من ألبرتو سافويا وبوب إيفانز، اللذين اخترعا
00:00:37المقياس في عام 2007 أثناء تجربة أدوات اختبار المطورين الآلية. لكن ألكسندر
00:00:44أعاد مؤخرًا الاهتمام بهذا المقياس المنسي من خلال كتابة هذه المدونة الثاقبة عنه
00:00:49وكيف أنه في الوقت الحاضر حيث يُكتب كل الكود تقريبًا بواسطة وكلاء الذكاء الاصطناعي، أصبح من المهم أكثر من أي وقت مضى
00:00:55مسح قاعدة الكود الخاصة بك بحثًا عن هذه المشكلات الخفية. إنه مفهوم رائع جدًا وسنستكشفه
00:01:01بمزيد من التفصيل في فيديو اليوم. لذا دعونا نتعمق في الأمر. لفهم سبب أهمية هذا، دعونا ننظر إلى
00:01:11هذه الدالة على شاشتي. إنها تتعامل مع تحويل بيانات متعدد الخطوات مع عبارات مطابقة
00:01:16متداخلة بعمق، وبعض الحلقات التكرارية، والكثير من مسارات معالجة الأخطاء. لذا فإن تعقيدها الدواري مرتفع جدًا، حوالي 15.
00:01:24الآن إذا لم تكن على دراية بمصطلح التعقيد الدواري، فهو في الأساس طريقة فاخرة لقياس
00:01:30عدد المسارات المختلفة التي يمكن أن تسلكها قطعة من البيانات عبر الكود الخاص بك. في كل مرة تكتب فيها عبارة if
00:01:36أو مطابقة (match) أو حلقة while أو كتلة catch، فإنك تنشئ مفترق طرق، وكلما زادت المفترقات لديك،
00:01:43ارتفعت درجة التعقيد. وأصبح من الصعب على العقل البشري رسم خريطة لكل نتيجة ممكنة
00:01:51في دالة ما. ولهذا السبب، كلما أمكن، نحاول تقسيم الدوال إلى مهام أصغر.
00:01:57وبالنسبة لهذه الدالة على شاشتي، فإن تعقيدًا قدره 15 يعني وجود 15 مسارًا منفصلًا تمامًا
00:02:04يمكن لهذا المنطق تنفيذه من البداية إلى النهاية. الآن إذا كانت هذه الدالة مغطاة بالكامل باختبارات الوحدات،
00:02:09تظل درجة CRAP الخاصة بها عند 15. إنها معقدة، لكنها آمنة لأننا نتحقق من سلوكها.
00:02:16وهذا ما يجب أن نتوقعه عند تشغيل أداة ألكسندر، CargoCrap. وهنا نرى أن النتيجة هي 13،
00:02:23وليس 15. ربما لأن المكتبة لم تأخذ معالجات الأخطاء في الاعتبار.
00:02:27لكن على أي حال، 15 و 13 متقاربان جدًا. لذا فإن هذه الأداة تقوم بما نتوقعه في الأساس.
00:02:33لكن دعونا نرى ماذا يحدث إذا قام شخص ما بحذف تلك الاختبارات أو إذا قام وكيل ذكاء اصطناعي بإنشاء هذه الدالة
00:02:39من الصفر وتخطى كتابة الاختبارات تمامًا. لذا في هذا المثال، سأقوم فقط بالتعليق على اختباراتي.
00:02:45وإذا أعدنا تشغيل CargoCrap مرة أخرى، تقفز تلك النتيجة فجأة لتتجاوز 100.
00:02:51إذ تستخدم صيغة مباشرة لحساب المخاطر من خلال موازنة التعقيد الدواري،
00:02:57وعدد مسارات التنفيذ الخطية عبر الكود الخاص بك مقابل تغطية الاختبار.
00:03:03لذا إذا نظرنا إلى هذه الدالة، فإن C هو التعقيد الدواري للدالة و COV هو تغطية الاختبار
00:03:10معبرًا عنه ككسر بين صفر وواحد. والعملية الحسابية تعاقب بشدة الكود المعقد الذي يفتقر إلى الاختبارات.
00:03:17لذا إذا كانت تغطيتك مائة بالمائة، فإن المسار الأول بأكمله للمعادلة ينخفض إلى صفر
00:03:23وتساوي درجة CRAP ببساطة تعقيدك الدواري.
00:03:26ولكن إذا انخفضت تغطيتك، فإن الأس التكعيبي على الجانب الأيسر يتسبب في ارتفاع درجة المخاطرة بشكل كبير.
00:03:33وتعطي دالة ذات تعقيد 10 وتغطية صفر درجة CRAP قدرها 110.
00:03:39وهذا أمر جيد لأنه إذا كنت تريد قاعدة كود حيث، على سبيل المثال،
00:03:43لا تتجاوز أي دالة تعقيدًا دواريًا قدره خمسة، فهذا هو مقياسك الأساسي الذي يجب مراقبته.
00:03:49وإذا حصلت أي دالة على تعقيد أعلى من خمسة، فأنت تعلم أن هذه هي المنطقة التي تستحق الاهتمام.
00:03:55عادةً ما تسمح بتعقيد أعلى. CargoCrap لديه افتراضي مضبوط عند 30.
00:04:00لكنني أقول فقط أنه يمكنك ضبط هذا المقياس بنفسك كيفما تشاء.
00:04:05وبشكل أساسي هذا مقياس جيد للاهتمام به كحل وسط.
00:04:09وهذا يصبح أمرًا بالغ الأهمية في عصر الكود الذي ينشئه الذكاء الاصطناعي.
00:04:13لأن وكلاء الذكاء الاصطناعي بارعون بشكل لا يصدق في إنتاج كتل كود معقدة وصحيحة نحويًا
00:04:20تتعامل مع حالات حافة لم تفكر فيها حتى، لكنهم سيئون للغاية في كتابة
00:04:25اختبارات تكامل مفيدة وقوية ما لم يُجبروا على ذلك صراحةً.
00:04:30لذا فإن أدوات مثل CargoCrap مخصصة للتشغيل كفحص ثانٍ بعد تشغيل جميع اختبارات الوحدات
00:04:37لتقييم جودة الكود الإجمالية.
00:04:39وهي تعمل بشكل أساسي كخريطة حرارية لديونك التقنية، مما يشير مباشرة إلى الكود
00:04:44الأكثر عرضة للتعطل أثناء عملية إعادة الهيكلة.
00:04:47وهذا مفيد أيضًا بشكل خاص إذا كنت ترغب في الحفاظ على قاعدة الكود الخاصة بك منظمة جيدًا
00:04:52في حال احتجت إلى ضم مهندس جديد إلى فريقك.
00:04:56ونحن نعلم من الحكايات كيف يمكن أن تصبح قواعد الكود غير متوازنة بشكل جنوني مع كل هذا
00:05:02الكود الذي ينشئه الذكاء الاصطناعي في هذه الأيام إذا لم ننتبه إليه.
00:05:06وفي بعض الأحيان يكون لدى وكلاء الذكاء الاصطناعي هؤلاء أيضًا ميل لتكرار نفس الدالة عبر ملفات متعددة.
00:05:13لذا أعتقد أن أدوات مثل هذه، والأهم من ذلك منهجيات مثل هذه، مهم أن تكون على دراية بها
00:05:19وألا ننساها في مشهد البرمجة الحديث الخاص بنا للحفاظ على جودة الكود لدينا عالية.
00:05:24نفس المؤلفين الذين توصلوا إلى هذه المنهجية أصدروا أيضًا أداة مقياس CRAP للغة Java.
00:05:30وبصراحة، حتى قراءة مدونة ألكسندر مؤخرًا، لم أكن أعلم حتى بوجود هذا المقياس.
00:05:34لذا أنا ممتن لأن أداته جعلتني ألاحظ هذه الممارسة الهندسية المنسية منذ زمن طويل.
00:05:40وأنا متأكد من أن لغات البرمجة الأخرى ستستفيد أيضًا من مثل هذه الأداة.
00:05:44لذا إذا كنت تفكر في مشروع ممتع لبنائه في وقت فراغك،
00:05:48اذهب واقرأ مدونة ألبرتو سافويا الأصلية وابنِ واحدة للغة برمجة أخرى
00:05:53لأنها قد تكون أداة مفيدة جدًا للكثير من المطورين.
00:05:57إذًا، هذا كل شيء يا رفاق.
00:05:58هذا هو CRAP باختصار.
00:06:01بدا ذلك مضحكًا.
00:06:02على أي حال، ما هي بعض الممارسات الهندسية أو المقاييس الأخرى المنسية التي تعرفونها
00:06:08والتي يجب أن نوليها مزيدًا من الاهتمام في هذا العصر الجديد من البرمجة الوكيلة؟
00:06:13أخبرونا في قسم التعليقات في الأسفل.
00:06:15ويا رفاق، إذا أعجبتكم هذه الأنواع من التحليلات التقنية،
00:06:18يرجى إعلامي بذلك من خلال الضغط على زر الإعجاب أسفل الفيديو.
00:06:21ولا تنسوا أيضًا الاشتراك في قناتنا.
00:06:24كان معكم أندروس من BetterStack وسأراكم في الفيديوهات القادمة.
00:06:28سأراكم في الفيديوهات القادمة.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video