Design Pattern أهمية ال
لماذا الـ Design Pattern مهم بأي برنامج ؟
بالبداية ما هو Design Pattern ؟
باختصار هي نتاج التطور الطبيعي لتاريخ البرمجيات، لكن كيف؟
اذا منرجع للزمن شوي رح نعرف انه ببداية ظهور البرمجة، كانت كل الأكواد بتنكتب باسلوب Sequential، بمعنى إنك بتطوّر وبتكتب السوفتوير كله عبارة عن سطور من الكود تحت بعضا بتتنفذ بالترتيب وكان يطلق عليها بـ “Sequential Programming”.
بعد فترة ومع وزيادة وتضخم السوفتوير صاروا يلاحظوا ان الكود بتكرر جدًا، لهيك فكروا بطريقة يجمعوا فيها كل كود بتكرر او أي كود رح يستخدم أكثر من مرة بالبروجكت بمكان واحد، واذا احتاجوا هالكود ألف مرة، ببساطة بيعملوا كول. وهون تم ابتكار مفهوم الـ Functions. وكان يطلق عليها عليها “Procedural programming”.
مع زيادة السنين وتطوّر البرمجيّات بشكل ضخم وتسارع أضخم، صاروا يبحثوا عن طريقة كيف نزيد انتاجية المبرمج + نزيد كفاءة السوفتوير من بعض النواحي. فلقوا عشان يوصلوا لهي النقطة لازم نقرّب الموضوع لطريقة فهم وتفكير الإنسان، وهون تم اطلاق مفهوم الـ object oriented programming وصرنا نقسم البروجكت لمجموعة كلاسس ومنحدد علاقتها ببعضها ومنصير نوّرث سلوك كل منها للاخرى تمامًا زي وراثة الابناء لابوهم بكثير من الصفات + كل واحد اله بعض الصفات المختلفة عن الاخر. واثبت هذا الاسلوب لحد الآن انه فعّال جدًا.
طبيعي وانت شغال كـ Software engineer بتواجهك أخطاء ومشاكل بتفكرلها في حلول وبتنحل معك، مع الوقت في مجموعة مشاكل صارت (ورح تصير) بتتكرر مع ناس كثير ومشاريع ضخمة هون لقوا انه هي المشاكل فعليًا Common بين المطوّرين وبدأوا يعملولها طرق وحلول (Patterns) ويطوروا طرق موحدة للحلول هاي من قبل مجتمعات كل يوم بتعمل كونتربيوت لتسهل حياة المبرمجين والمطورين .وتمّ اطلاق مفهوم الـ Design patterns لهي الأسباب.
ببساطة الـDesign Pattern مجموعة حلول لمشاكل شائعة رح تقابلك بشكل متكرر وانت بتبني بالسوفتوير. لكن ضروري تعرف انها مش أكواد او شغلة تتحول لكود، هي مجموعة خطوات لحل مشكلة معينة، انت بتحولها لكود بعد هيك.
فائدة استخدام الـ Design patterns؟
لما تستخدم الـ Design patterns رح تعمل اغلب الـ Best practices اللي رح تخليك Professional software engineer مثل:
-
– رح تخلي المشروع Very clean code.
-
– رح يسّهل عملية التعاون بينك وبين أي تيم بالبروجكت.
-
– رح تلاقي حالك بتكتب كود اقل بكثير Less code.
-
– رح تلاقي ان الـ Software الي بتبني فيه سهل يتطور وتعدل فيه بأقل مجهود Scalability software.
-
– رح تلاقي ان قدرتك في حل المشاكل زادت بشكل ملحوظ جدًا.