Libelektra: إنشاء رمز للأخطاء

تم إنشاؤها على ١١ أغسطس ٢٠١٩  ·  4تعليقات  ·  مصدر: ElektraInitiative/libelektra

في مفهوم الخطأ السابق ، كان من المفيد جدًا إنشاء وحدات ماكرو لأننا غالبًا ما أضفنا أخطاء جديدة. ومع ذلك ، فإن إنشاء الكود نفسه معقد للغاية (كود C ++ الذي يطبع الكود ؛ وهو أيضًا ليس مثاليًا للترجمة المتقاطعة ، انظر أيضًا # 2814).

الآن لدينا مجموعة ثابتة إلى حد ما من بعض الأخطاء. لذا فإن السؤال هو ماذا يجب أن نفعل:

  1. قم بتدوين عدد قليل من وحدات الماكرو يدويًا (اجعل kdberrors.h ثابتًا ، وربما يتضمن أيضًا # 2697) ، وقم أيضًا بتدوين الاستثناءات يدويًا لربط اللغة (وأيضًا التعيينات من أخطاء Elektra الداخلية إلى أخطاء لطيفة خاصة باللغات)
  2. الانتقال إلى طريقة أكثر حداثة وأسهل لإنشاء رمز باستخدام نظام الشارب الخاص بنا ، والسماح لهذا بإنشاء رمز (تعيين) لجميع اللغات المترجمة (C ، C ++ ، Java ، Rust ، Go).
  3. الانتقال إلى رمز CMake الذي ينشئ وحدات الماكرو / الفئات (انظر أيضًا # 2814)

PhilippGackstatter @ raphi011kodebachPiankero ما رأيك؟

proposal

ال 4 كومينتر

أنا شخصياً أفضل الخيار 1. يجب ألا تتغير رموز الخطأ إلا بشكل نادر للغاية ، مما يجعل الجهد الإضافي لكتابة كود C يدويًا والحفاظ على تزامن اللغات الأخرى ضئيلًا. يجب أيضًا أن يكون الجهد الأولي أقل مقارنة بإعداد أي شكل من أشكال التوليد التلقائي.

لماذا ليس الخيار 2؟

يجب تزويد قوالب الشارب ببيانات الإدخال بطريقة ما. إما أن يتعين علينا استخدام ملف تنفيذي مخصص تم تجميعه في وقت الإنشاء. في هذه الحالة سنتخلص من std::cout << ... في كود C ++ ، لكن لن يتغير الكثير. الخيار الآخر هو استخدام الشارب الافتراضي القابل للتنفيذ ، وهو نص روبي وبالتالي يتطلب تثبيت روبي.

أيضًا لا يمكن إعادة استخدام kdb gen ، لأن ذلك سيتطلب تجميع kdb أولاً ، والذي يحتاج إلى kdberrors.h .

لماذا ليس الخيار 3؟

قد يعمل إنشاء كود C في CMake ، ولكن قد تواجه اللغات الأكثر تعقيدًا مشاكل في استخدام CMake.


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

أنا أيضًا أفضل الخيار 1 بسبب أكواد الخطأ المستقرة. تضيف إضافة إنشاء الكود أيضًا تعقيدًا غير ضروري إلى الكود الكلي الذي يكون عرضة للخطأ مرة أخرى.

kodebach شكرًا لك على توضيح الخيار 2

أعتقد أنه من الواضح تمامًا أننا نختار الخيار 1 ، Piankero ،

بالنسبة للارتباطات فهذا يعني أنه لم يتغير الكثير.

ماذا سيكون رائعًا إذا كان لدينا برنامج تعليمي للكتابة ملزم ، يصف:

  1. أي أجزاء من روابط Elektra منطقية (تطبيق ، مكون إضافي ، أدوات ، ...)
  2. كيفية دمج الارتباطات في CMake (إذا كان ذلك ممكنًا ومفيدًا)
  3. أي أجزاء من الارتباطات يمكن ويجب أن تختلف لكل لغة. هذا يشمل:

    • التكرارات

    • التحويل إلى أنواع أصلية (سلاسل ، int ، ...)

    • المشغل الزائد (إن وجد)

    • تكامل لغة البرمجة الأخرى (التدفقات ، رموز التجزئة ، الهوية ، ...)

    • إرجاع أخطاء من دوال kdb (ما هي هذه المشكلة هنا)

آمل أن نتمكن من تمديد هذا البرنامج التعليمي للمواقف المختلفة التي نراها بلغات مختلفة. Piankero ، هل يمكنك البدء في كتابة البرنامج التعليمي ، ولا سيما قسم معالجة الأخطاء (كيفية تنفيذ الميراث ، ...)

البرنامج التعليمي: # 2875
قرار التصميم: # 2872

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

darddan picture darddan  ·  4تعليقات

markus2330 picture markus2330  ·  3تعليقات

dominicjaeger picture dominicjaeger  ·  3تعليقات

mpranj picture mpranj  ·  3تعليقات

mpranj picture mpranj  ·  3تعليقات