أبقي في ذهنك دائما ..لا تكرر نفسك

بسم الله الرحمن الرحيم

الحمد لله رب العالمين, الحمد لله رب السماوات ورب العرش العظيم, الحمد لله حمدا كما ينبغي لجلال وجهه, وعظيم سلطانه, الحمد لله رب العالمين.

 

 

(DRY (Don't Repeat Yourself

إن من أهم المبادئ لدى المبرمجين, عدم تكرار نفس النص البرمجي أكثر من مرة داخل المشروع, وهذا الأمر يعد من مبادئ هندسة البرمجيات, ويعد هذا المبدئ من أهم المبادئ التي قدمت لتطوير البرمجيات المختلفة بأنواعها, وتم تصميم هذا المبدئ من قبل Andy Hunt  و  Dave Thomas.. وكانت انطلاقة هذا المبدئ من فكرة أن كل معرفة يجب أن تكون واحدة. لا اختلاف بها داخل النظام الواحد, يعني أن أي نظام يجب أن تقوم ببنائه ..له قواعد يسير عليه ..هذه القواعد ثابته للمشروع, وعليه يكون وجودها في مكان واحد هو الأساس, واستخدامها في أكثر من مكان هو الوسيلة .. ويكون الإستخدام عن طريق الإستدعاء وليس التكرار, ومن هنا تكمن الأهمية..فمثلا ..لو احتجنا أن نقوم بتغيير هذه القاعدة, لجميع أجزاء النظام, فإن كل ما يلزمنا هو أن نقوم بتغيير أسطر هذه القاعدة فقط, وفي مكان واحد, بينما في الأسلوب الآخر يلزمنا تغيير القاعدة في جميع الأماكن داخل المشروع,
 والآن .. بعد هذه اللمحة السريعة عن الموضوع ماذا تتوقع أن يكون نتاج استخدام هذا الأسلوب ؟
ستكون النتائج بكل بساطة شيفرة برمجية واضحة - مرتبة - نظيفة (clean code), وهذه الشيفرة توضح دائما مدى احترافية المبرمج الذي يعمل على هذا المشروع, وهي مقياس يقاس به المبرمجون لتقييم المستوى البرمجي للمبرمج ..
أيضا فإن هذا الإسلوب يقلل من التكرار الغير مرغوب فيه, وهذا يعني سرعة وأداء أفضل للمشروع, كما أنك بذلك تجعل من عملية معالجة - تطوير - تعديل - حذف - اضافة أي عنصر الى المشروع عملية سهلة, ويمكن القيام بها من قبلك شخصيا أو من قبل أي مبرمج آخر سيقوم بقرائة الشيفرة البرمجية الخاصة بك.. فأنت عندما تعمل ... إعمل بإسلوب تجعل من شيفرتك البرمجية مقروئة وواضحة لأي شخص قد يقف بجانبك ويطلع على ما تكتب, وكم مقدار الوضوح في استخدام الموارد في المشروع, كم هو دليل على احترافية المبرمج(طبعا مع اخذ الإعتبار الأداء والوقت والتنظيم ...الخ)

 

والآن ..لماذا تم الإستغناء عن العمل بالأسلوب القديم والتوجه الى العمل على مبدأ DRY ؟

وذلك لأسباب كثيرة قد يكون أهمها:

1) كل سطر في المشروع يحتاج الى تعديل أو صيانة يلزمني من المرور على المشروع كاملا.

2) يخرج كم كبير من ال Bug, وحل ال Bug أيضا يجب أن يكون على مستوى المشروع.

3) غير واضح وصعب التتبع للمبرمجين الآخرين.

4) كل مبرمج يتبع أسلوب برمجي معين, سيقوم بتوجيه اتقناص أو تحميل المبرمج السابق مسؤولية الأخطاء الناتجة, بالإضافة الى التقليل من مهارته.

5) لم يعد أحد يعمل بهذه الأنظمة سوى المبرمجين الذي يتعلمون في أول الطريق, لأنها مرحلة أولى قبل الانطلاق الى المرحلة الأخرى ..فهي حجر الأساس ..

 

اذن .. كيف يتم العمل على مفهوم ال DRY.؟

يكون العمل بتنظيم الشيفرة البرمجية بآليات وطرق مختلفة تستخدم لتنسيق الشيفرة البرمجية داخل المشروع دون تكرار, وباستغلال كامل للوظائف....ويمكن تلخيص ذلك بفكرة ال design patterns, وقد يكون من أشهرها ال MVC system المستخدمة في العديد من بيئات العمل مثل ال Yii وال zend ... الخ

فمبدأ عمل هذا ال MVC يكون بتنظيم المشروع من خلال عمل Model و View و Control ..  شاهد هذه الصورة لفهم اجرائات العمل

(بإمكانك البحث عن ال MVC system لمعرفة المزيد من التفاصيل, وسيتم بإذن الله تعالى شرح هذه الموضوع في مقال آخر بإذن الله تعالى, ونكتفي هنا بالسرد فقط)

وطبعا ظهور ال OOP هو من أهم الأمور التي أدت الى الإنطلاق في هذا العالم وهذا المبدئ ...

 

والآن هل دائما يجب أن تكون الشيفرة البرمجية DRY.؟

الجواب طبعا لا .. فهناك حالات يجب أن لا يكون فيها الشيفرة البرمجية DRY مثل data denormalization in a database يستخدم هذا الأسلوب لتحسين سرعة أو أداء البيانات في قاعدة البيانات, فيكون هنا الية الإستدعاء استدعاء مباشرللبيانات المطلوية ... (لكنها حالات خاصة وليست عامة ولها أسلوب ومبدئ خاص بها أيضا)..

 

والآن ..أرجوك, عندما ترغب في تطوير أي مشروع خذ بعين الإعتبار من سيأتي بعدك, أو خذ بعين الإعتبار نفسك اذا طلب منك أي تعديل .. استخدم مفاهيم ال OOP على أقل تقدير للقيام بالوظائف .. إستخدم ال function ..فهذا ليس عيبا !!
أرجوك ..لا تقم بكتابة شيفرتك البرمجية على شكل أسطر متتابعة فقط ..لتنفيذ المهمة ونقطة.

 

خلاصة الموضوع:

1) استخدامك لل DRY يعني استخدامك لاستراتيجية أساسية للحد من التعقيد في وحدات النظام, وذلك عن طريق تقسم المشروع الى أجزاء صغيرة.

2) القطع الصغيرة التي تم انشائها في النقطة الأولى يجب أن تضبط مرة واحدة في كل النظام.

3) يجب أن قطعة صغيرة وتم ضبها داخل النظام موثقة ولا يوجد لبس بها.

 

اللهم اغفر لي ولوالدي وللمسلمين أحيائهم وأمواتهم إنك سميع عليم رحيم, وآخر دعوانا أن الحمد لله رب العالمين.

أخوكم أنيس حكمت أبو حميد.