سؤال

لقد قمت بتطوير مترجم مترجم في C ++ للغة البرمجة الخاصة بي (إذا كنت تريد) بعض الوقت الآن. أحد الأشياء الرئيسية التي لاحظتها: أبدأ بمفهوم مرن ، وأكثر رمز I (Tokenizer-> parser-> المترجم) كلما كان النظام بأكمله أقل مرونة.

على سبيل المثال: لم أكن أقوم بتنفيذ include الوظيفة في البداية ، ومع ذلك ، كان المترجم مترجمًا بالفعل - واجهت صعوبات شديدة في تنفيذها وكانت مثل "تصحيح شيء ما" في وقت لاحق. لقد فقد نظامي المرونة بسرعة كبيرة.

  • كيف يمكنني تعلم الحفاظ على مشاريع C ++ صغيرة نسبيًا مرنة وقابلة للتمديد قدر الإمكان أثناء التطوير؟
هل كانت مفيدة؟

المحلول

  1. حدد هيكل المشروع قبل البدء في الترميز. حدد أهدافك الرئيسية وفكر في كيفية تحقيق ذلك.

  2. رمز الرؤوس.

  3. انظر إذا كان من الممكن تنفيذ كل ميزة باستخدام هذه المجموعة من الواجهات

  4. إذا كان لا -> عد إلى (2)

  5. إذا كانت الإجابة بنعم -> ملفات .CPP

  6. يتمتع.

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

نصائح أخرى

إذا كنت بحاجة إلى الاحتفاظ بها

مشاريع C ++ مرنة ويمكن توسيعها قدر الإمكان أثناء التطوير

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

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

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

لا تخف من التطور (إعادة البناء).

إذا كان هناك العديد من الفصول التي تتناسب مع السمة ، فقم بإنشاء فئة قاعدة مشتركة.

بدلاً من أعضاء بيانات الترميز الثابت ، استخدم المؤشرات إلى فئة قاعدة مجردة.
على سبيل المثال ، بدلاً من الاستخدام std::ifstream استعمال std::istream.

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top