23

البرمجة بأسلوب السيناريو

البرمجة بأسلوب السيناريو

السلام عليكم ورحمة الله وبركاته

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

من هذا المنطلق ومن خلال التقدم في البرمجة فكرت بأسلوب السيناريو لبرمجة التطبيقات.

ولا أجد تقريبا لهذه الفكرة إلا طرح مثال حتى تتضح (اللغة المستخدمة C# و لكن المفهوم واحد).

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

فمثلا إذا أردنا أن نفرغ صندوق النص TextBox من خلال النقر على زر لوحة المفاتيح F5 وبعد أن نحرره

فإنه يتوجب علينا أن نضيف Method ونربطه بحدث رفع المفتاح KeyUp ثم نفحص قيمة المفتاح المضغوط فإن كان F5 حينها نضع مود تفريغ العنصر المرسل وهو صندوق النص.

وهذا سيتكرر من أجل كل واجهة وكل عنصر

ولنحاول تطبيق ما سبق بأسلوب السيناريو

والسيناريو هو أن تضع الخطوط العريضة لعنصر ما كي يسلك سلوك معين دون الدخول في التفاصيل وطريقة التنفيذ

و يمكن تطبيق هذا الأسلوب من خلال الفئات المتداخلة Class داخل Class ومن خلال الطرق الموسعة Extension Methods و من خلال الديليجيت Delegates

و هو أسلوب شبيه بمكتبة Linq حيث أنك كلما وضعت دالة وأغلقت القوس ثم أغلقته حتى تظهر لك نفس الدوال من جديد

ولكي نحول مسألة تفريغ صندوق النص المذكور أعلاه بأسلوب السيناريو يمكن كتابته بالشكل التالي:

textBox1.On().Key(Keys.F5).Up().Do(() => textBox1.Clear());
textBox1.On().Mouse(MouseButtons.Right).Up().With(Key.Shift).Do(() => textBox1.Clear());

و طبعا هذه المناهج هي المسؤولة عن إضافة الحدث والأكشن للعنصر

و عليه نكون قد حددنا سلوك كامل من خلال سطر بدل التشتت بين الأحداث ومقارنة البارمترات.

طبعا ليس مقصود التطبيق على مسألة الأحداث فحسب بل يمكن تطبيقها على أي شيء بحيث نتصور أن لدينا كائن Object و نريد أن نبني له خريطة التصرفات ومن ثم نحدد له السلوك الذي سيسلكه، من هنا أسميته أسلوب السيناريو وهو تحديد سلوك الشخصيات ، بغض النظر عن تفاصيل التنفيذ.

هي فكرة أحببت مشاركتكم بها.

قد تكون موجودة هنا أو هناك بأسلوب ما أو فريم وورك جاهز ولكني لم أقع عليه.

ودمتم بخير.

أخوكم أبو أحمد


وأخيرا وصلت لأول موضوع لك :)

سبحان الله! وكأني كتبته بالأمس، ما أعجل الأيام !

التحدي ليس هنا وإنما كم عدد المواضيع التي كتبتها منذ تسجيلي، وكم عدد الردود ؟

فتحت قريحتي لأستذكر أول تعليق و عدد المساهمات والتعليقات ツ

شكرا لأني وصلت بسببك وقد يصل آخرون (الذين يقرؤون آخر الردود) كتبت هذا التعليق يوم الأربعاء 29 حزيران 2016 يصادف هذا اليوم العشر الأواخر من رمضان الوقت فجرا الآن.. لم أجد وسيلة للنوم و شعرت بملل لا يطاق لا أدري ما العمل.. كنت أتصفح بعض المواضيع ودخلت صدفة لمجتمع تسلية.. قرأت عنواين المواضيع الأخيرة ولم ترقني.. فجأة برقت فكرة في رأسي وهي اضغط على الأكثر شيوعا منذ سنة.. ولأنّ هذا الموضوع مرّ عليه سنتين لم يكن ضمن القائمة (أنت أيها العضو المستقبلي سوف تستمتع بتعليقي هذا بعد عشر سنوات من الآن) وصلت اليه عن طريق هذا الموضوع

من طرائف المواضيع التي قرأتها اليوم هو هذين الموضوعين.. ستجدني أشرت الى الموضوع الآخر داخل أحدهما وستجد قبلتي"3>"هناك.. تحياتي *_-