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

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

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

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

ولا أجد تقريبا لهذه الفكرة إلا طرح مثال حتى تتضح (اللغة المستخدمة 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 و نريد أن نبني له خريطة التصرفات ومن ثم نحدد له السلوك الذي سيسلكه، من هنا أسميته أسلوب السيناريو وهو تحديد سلوك الشخصيات ، بغض النظر عن تفاصيل التنفيذ.

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

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

ودمتم بخير.

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