في مفهوم الخطأ السابق ، كان من المفيد جدًا إنشاء وحدات ماكرو لأننا غالبًا ما أضفنا أخطاء جديدة. ومع ذلك ، فإن إنشاء الكود نفسه معقد للغاية (كود C ++ الذي يطبع الكود ؛ وهو أيضًا ليس مثاليًا للترجمة المتقاطعة ، انظر أيضًا # 2814).
الآن لدينا مجموعة ثابتة إلى حد ما من بعض الأخطاء. لذا فإن السؤال هو ماذا يجب أن نفعل:
PhilippGackstatter @ raphi011kodebachPiankero ما رأيك؟
أنا شخصياً أفضل الخيار 1. يجب ألا تتغير رموز الخطأ إلا بشكل نادر للغاية ، مما يجعل الجهد الإضافي لكتابة كود C يدويًا والحفاظ على تزامن اللغات الأخرى ضئيلًا. يجب أيضًا أن يكون الجهد الأولي أقل مقارنة بإعداد أي شكل من أشكال التوليد التلقائي.
لماذا ليس الخيار 2؟
يجب تزويد قوالب الشارب ببيانات الإدخال بطريقة ما. إما أن يتعين علينا استخدام ملف تنفيذي مخصص تم تجميعه في وقت الإنشاء. في هذه الحالة سنتخلص من std::cout << ...
في كود C ++ ، لكن لن يتغير الكثير. الخيار الآخر هو استخدام الشارب الافتراضي القابل للتنفيذ ، وهو نص روبي وبالتالي يتطلب تثبيت روبي.
أيضًا لا يمكن إعادة استخدام kdb gen
، لأن ذلك سيتطلب تجميع kdb
أولاً ، والذي يحتاج إلى kdberrors.h
.
لماذا ليس الخيار 3؟
قد يعمل إنشاء كود C في CMake ، ولكن قد تواجه اللغات الأكثر تعقيدًا مشاكل في استخدام CMake.
إذا قررنا استخدام شكل ما من أشكال إنشاء الشفرات ، فيجب علينا فقط إنشاء الأجزاء التي نحتاج إلى إنشائها بشكل مطلق. على سبيل المثال ، يحتوي kdberrors.h
على الكثير من التعليمات البرمجية التي تكون ثابتة تمامًا ومستقلة عن الأخطاء التي لدينا بالفعل. لا يجب إنشاء هذا الرمز ، يجب علينا #include
من ملف ثابت.
أنا أيضًا أفضل الخيار 1 بسبب أكواد الخطأ المستقرة. تضيف إضافة إنشاء الكود أيضًا تعقيدًا غير ضروري إلى الكود الكلي الذي يكون عرضة للخطأ مرة أخرى.
kodebach شكرًا لك على توضيح الخيار 2
أعتقد أنه من الواضح تمامًا أننا نختار الخيار 1 ، Piankero ،
بالنسبة للارتباطات فهذا يعني أنه لم يتغير الكثير.
ماذا سيكون رائعًا إذا كان لدينا برنامج تعليمي للكتابة ملزم ، يصف:
آمل أن نتمكن من تمديد هذا البرنامج التعليمي للمواقف المختلفة التي نراها بلغات مختلفة. Piankero ، هل يمكنك البدء في كتابة البرنامج التعليمي ، ولا سيما قسم معالجة الأخطاء (كيفية تنفيذ الميراث ، ...)
البرنامج التعليمي: # 2875
قرار التصميم: # 2872