لا تكرر نفسك DRY (Don't Repeat yourself)

anees abu-hmaid
anees abu-hmaidSenior Full Stack Developer

ملخص عن مفهوم العمل بدون تكرار وهو اسلوب ال DRY

بسم الله الرحمن الرحيم 
الحمد لله رب العالمين, الحمد لله رب السماوات ورب العرش العظيم, الحمد لله حمدا 
كما ينبغي لجلال وجهه, وعظيم سلطانه, الحمد لله رب العالمين. 
DRY (Don't Repeat Yourself) 
إن من أهم المبادئ لدى المبرمجين, عدم تكرار نفس النص البرمجي أكثر من مرة 
داخل المشروع, وهذا الأمر يعد من مبادئ هندسة البرمجيات, ويعد هذا المبدئ من 
أهم المبادئ التي قدمت لتطوير البرمجيات المختلفة بأنواعها, وتم تصميم هذا 
وكانت انطلاقة هذا المبدئ .. Dave Thomas و Andy Hunt المبدئ من قبل 
من فكرة أن كل معرفة يجب أن تكون واحدة. لا اختلاف بها داخل النظام الواحد, 
يعني أن أي نظام يجب أن تقوم ببنائه ..له قواعد يسير عليه ..هذه القواعد ثابته 
للمشروع, وعليه يكون وجودها في مكان واحد هو الأساس, واستخدامها في أكثر 
من مكان هو الوسيلة .. ويكون الإستخدام عن طريق الإستدعاء وليس التكرار, ومن 
هنا تكمن الأهمية..فمثلا ..لو احتجنا أن نقوم بتغيير هذه القاعدة, لجميع أجزاء 
النظام, فإن كل ما يلزمنا هو أن نقوم بتغيير أسطر هذه القاعدة فقط, وفي مكان 
واحد, بينما في الأسلوب الآخر يلزمنا تغيير القاعدة في جميع الأماكن داخل 
المشروع, 
والآن .. بعد هذه اللمحة السريعة عن الموضوع ماذا تتوقع أن يكون نتاج استخدام 
هذا الأسلوب ؟ 
clean ( ستكون النتائج بكل بساطة شيفرة برمجية واضحة - مرتبة - نظيفة 
وهذه الشيفرة توضح دائما مدى احترافية المبرمج الذي يعمل على هذا ,)code 
المشروع, وهي مقياس يقاس به المبرمجون لتقييم المستوى البرمجي للمبرمج .. 
أيضا فإن هذا الإسلوب يقلل من التكرار الغير مرغوب فيه, وهذا يعني سرعة وأداء 
أفضل للمشروع, كما أنك بذلك تجعل من عملية معالجة - تطوير - تعديل - حذف - 
اضافة أي عنصر الى المشروع عملية سهلة, ويمكن القيام بها من قبلك شخصيا أو
من قبل أي مبرمج آخر سيقوم بقرائة الشيفرة البرمجية الخاصة بك.. فأنت عندما 
تعمل ... إعمل بإسلوب تجعل من شيفرتك البرمجية مقروئة وواضحة لأي شخص 
قد يقف بجانبك ويطلع على ما تكتب, وكم مقدار الوضوح في استخدام الموارد في 
المشروع, كم هو دليل على احترافية المبرمج)طبعا مع اخذ الإعتبار الأداء والوقت 
والتنظيم ...الخ( 
والآن ..لماذا تم الإستغناء عن العمل بالأسلوب القديم والتوجه الى العمل على مبدأ 
؟ DRY 
وذلك لأسباب كثيرة قد يكون أهمها: 
1( كل سطر في المشروع يحتاج الى تعديل أو صيانة يلزمني من المرور على 
المشروع كاملا. 
أيضا يجب أن يكون على مستوى Bug وحل ال ,Bug 2( يخرج كم كبير من ال 
المشروع. 
3( غير واضح وصعب التتبع للمبرمجين الآخرين. 
4( كل مبرمج يتبع أسلوب برمجي معين, سيقوم بتوجيه اتقناص أو تحميل المبرمج 
السابق مسؤولية الأخطاء الناتجة, بالإضافة الى التقليل من مهارته. 
5( لم يعد أحد يعمل بهذه الأنظمة سوى المبرمجين الذي يتعلمون في أول الطريق, 
لأنها مرحلة أولى قبل الانطلاق الى المرحلة الأخرى ..فهي حجر الأساس .. 
؟.DRY اذن .. كيف يتم العمل على مفهوم ال 
يكون العمل بتنظيم الشيفرة البرمجية بآليات وطرق مختلفة تستخدم لتنسيق الشيفرة 
البرمجية داخل المشروع دون تكرار, وباستغلال كامل للوظائف....ويمكن تلخيص
MVC system وقد يكون من أشهرها ال ,design patterns ذلك بفكرة ال 
الخ ... zend وال Yii المستخدمة في العديد من بيئات العمل مثل ال 
View و Model يكون بتنظيم المشروع من خلال عمل MVC فمبدأ عمل هذا ال 
شاهد هذه الصورة لفهم اجرائات العمل .. Control و 
لمعرفة المزيد من التفاصيل, وسيتم بإذن MVC system )بإمكانك البحث عن ال 
الله تعالى شرح هذه الموضوع في مقال آخر بإذن الله تعالى, ونكتفي هنا بالسرد 
فقط( 
هو من أهم الأمور التي أدت الى الإنطلاق في هذا العالم OOP وطبعا ظهور ال 
وهذا المبدئ ... 
؟.DRY والآن هل دائما يجب أن تكون الشيفرة البرمجية
مثل DRY الجواب طبعا لا .. فهناك حالات يجب أن لا يكون فيها الشيفرة البرمجية 
يستخدم هذا الأسلوب لتحسين سرعة data denormalization in a database 
أو أداء البيانات في قاعدة البيانات, فيكون هنا الية الإستدعاء استدعاء مباشرللبيانات 
المطلوية ... )لكنها حالات خاصة وليست عامة ولها أسلوب ومبدئ خاص بها 
أيضا(.. 
والآن ..أرجوك, عندما ترغب في تطوير أي مشروع خذ بعين الإعتبار من سيأتي 
بعدك, أو خذ بعين الإعتبار نفسك اذا طلب منك أي تعديل .. استخدم مفاهيم ال 
فهذا ليس عيبا !! .. function على أقل تقدير للقيام بالوظائف .. إستخدم ال OOP 
أرجوك ..لا تقم بكتابة شيفرتك البرمجية على شكل أسطر متتابعة فقط ..لتنفيذ 
المهمة ونقطة. 
خلاصة الموضوع: 
يعني استخدامك لاستراتيجية أساسية للحد من التعقيد في DRY 1( استخدامك لل 
وحدات النظام, وذلك عن طريق تقسم المشروع الى أجزاء صغيرة. 
2( القطع الصغيرة التي تم انشائها في النقطة الأولى يجب أن تضبط مرة واحدة في 
كل النظام. 
3( يجب أن قطعة صغيرة وتم ضبها داخل النظام موثقة ولا يوجد لبس بها. 
اللهم اغفر لي ولوالدي وللمسلمين أحيائهم وأمواتهم إنك سميع عليم رحيم, وآخر 
دعوانا أن الحمد لله رب العالمين. 
أخوكم أنيس حكمت أبو حميد.

Recomendados

مهووس الحاسوب Computer Geek por
مهووس الحاسوب Computer Geekمهووس الحاسوب Computer Geek
مهووس الحاسوب Computer Geekanees abu-hmaid
3.6K vistas4 diapositivas
Bootstrap3 دورة باللغة العربية por
Bootstrap3 دورة باللغة العربيةBootstrap3 دورة باللغة العربية
Bootstrap3 دورة باللغة العربيةanees abu-hmaid
15.8K vistas408 diapositivas
PHP Advance 101 دورة por
PHP Advance 101 دورة PHP Advance 101 دورة
PHP Advance 101 دورة anees abu-hmaid
5.7K vistas197 diapositivas
باللغة العربية jQuery دورة por
 باللغة العربية jQuery دورة باللغة العربية jQuery دورة
باللغة العربية jQuery دورةanees abu-hmaid
4.4K vistas114 diapositivas
java script course دورة جافا سكربت باللغة العربية por
java script course دورة جافا سكربت باللغة العربيةjava script course دورة جافا سكربت باللغة العربية
java script course دورة جافا سكربت باللغة العربيةanees abu-hmaid
23.6K vistas290 diapositivas
باللغة العربية CSS دورة por
  باللغة العربية CSS دورة   باللغة العربية CSS دورة
باللغة العربية CSS دورة anees abu-hmaid
10.3K vistas201 diapositivas

Más contenido relacionado

La actualidad más candente

باللغة العربية HTML5 دورة por
باللغة العربية HTML5 دورة باللغة العربية HTML5 دورة
باللغة العربية HTML5 دورة anees abu-hmaid
8.2K vistas105 diapositivas
باللغة العربية SASS دورة por
  باللغة العربية SASS دورة   باللغة العربية SASS دورة
باللغة العربية SASS دورة anees abu-hmaid
8.4K vistas86 diapositivas
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم por
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم NoureddineHassi
143 vistas188 diapositivas
تعلم HTML CSS و JavaScript por
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptMolham Al-Maleh
1.7K vistas134 diapositivas
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها por
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاالجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاanees abu-hmaid
198 vistas5 diapositivas
الدرس السادس عشر por
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشرAnas Aloklah
371 vistas20 diapositivas

La actualidad más candente(11)

باللغة العربية HTML5 دورة por anees abu-hmaid
باللغة العربية HTML5 دورة باللغة العربية HTML5 دورة
باللغة العربية HTML5 دورة
anees abu-hmaid8.2K vistas
باللغة العربية SASS دورة por anees abu-hmaid
  باللغة العربية SASS دورة   باللغة العربية SASS دورة
باللغة العربية SASS دورة
anees abu-hmaid8.4K vistas
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم por NoureddineHassi
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
NoureddineHassi143 vistas
تعلم HTML CSS و JavaScript por Molham Al-Maleh
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScript
Molham Al-Maleh1.7K vistas
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها por anees abu-hmaid
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاالجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
anees abu-hmaid198 vistas
الدرس السادس عشر por Anas Aloklah
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشر
Anas Aloklah371 vistas
Noor-Book.com تعلم HTML و CSS 2 .pdf por AshrafDabbas1
Noor-Book.com  تعلم HTML و CSS 2 .pdfNoor-Book.com  تعلم HTML و CSS 2 .pdf
Noor-Book.com تعلم HTML و CSS 2 .pdf
AshrafDabbas1149 vistas
كتاب تعلم Html5 css3 por titifcom
كتاب تعلم Html5 css3كتاب تعلم Html5 css3
كتاب تعلم Html5 css3
titifcom4.7K vistas
Text Formatting+(HTML5) por Ahmed Hassan
Text Formatting+(HTML5)Text Formatting+(HTML5)
Text Formatting+(HTML5)
Ahmed Hassan570 vistas
الدرس الرابع عشر por Anas Aloklah
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشر
Anas Aloklah182 vistas
بعض اساسيات البرمجة por madani zamzami
بعض اساسيات البرمجةبعض اساسيات البرمجة
بعض اساسيات البرمجة
madani zamzami238 vistas

Destacado

تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية por
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةتعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةanees abu-hmaid
2.2K vistas5 diapositivas
الخصوصية وموقعها من الإعراب por
الخصوصية وموقعها من الإعرابالخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابanees abu-hmaid
2.1K vistas4 diapositivas
jQuery UI (Effect) por
jQuery UI (Effect) jQuery UI (Effect)
jQuery UI (Effect) anees abu-hmaid
3.2K vistas54 diapositivas
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث por
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثاللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثanees abu-hmaid
5.2K vistas4 diapositivas
Ecmascript 6 (ES6) جافا سكربت (6) por
Ecmascript 6 (ES6) جافا سكربت (6)Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)anees abu-hmaid
7.3K vistas114 diapositivas
الإسلام والتقنية Islam & IT por
الإسلام والتقنية Islam & ITالإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITanees abu-hmaid
2.8K vistas3 diapositivas

Destacado(17)

تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية por anees abu-hmaid
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةتعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
anees abu-hmaid2.2K vistas
الخصوصية وموقعها من الإعراب por anees abu-hmaid
الخصوصية وموقعها من الإعرابالخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعراب
anees abu-hmaid2.1K vistas
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث por anees abu-hmaid
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثاللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
anees abu-hmaid5.2K vistas
Ecmascript 6 (ES6) جافا سكربت (6) por anees abu-hmaid
Ecmascript 6 (ES6) جافا سكربت (6)Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)
anees abu-hmaid7.3K vistas
الإسلام والتقنية Islam & IT por anees abu-hmaid
الإسلام والتقنية Islam & ITالإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & IT
anees abu-hmaid2.8K vistas
دورة دروبال 7 باللغة العربية por anees abu-hmaid
دورة دروبال 7 باللغة العربيةدورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربية
anees abu-hmaid3.5K vistas
دورة CSS3 باللغة العربية por anees abu-hmaid
دورة CSS3 باللغة العربيةدورة CSS3 باللغة العربية
دورة CSS3 باللغة العربية
anees abu-hmaid6.4K vistas
باللغة العربية JSON دورة por anees abu-hmaid
  باللغة العربية JSON دورة   باللغة العربية JSON دورة
باللغة العربية JSON دورة
anees abu-hmaid6.6K vistas
تنسيق الشيفرة البرمجية (Coding Style) por anees abu-hmaid
تنسيق الشيفرة البرمجية (Coding Style)تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)
anees abu-hmaid1.4K vistas
Canvas دورة باللغة العربية por anees abu-hmaid
Canvas دورة باللغة العربيةCanvas دورة باللغة العربية
Canvas دورة باللغة العربية
anees abu-hmaid6.1K vistas
ITIL Foundation por Ahmed Gamil
ITIL FoundationITIL Foundation
ITIL Foundation
Ahmed Gamil209 vistas

Similar a لا تكرر نفسك DRY (Don't Repeat yourself)

Dynamo por
DynamoDynamo
DynamoOmar Selim
314 vistas24 diapositivas
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf por
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfأريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfNadiaMohamedSherif
14 vistas13 diapositivas
Object Oriented Programming por
Object Oriented ProgrammingObject Oriented Programming
Object Oriented ProgrammingOmar Albelbaisy
1.8K vistas52 diapositivas
الدرس الثاني عشر por
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشرAnas Aloklah
253 vistas3 diapositivas
9 networking por
9 networking9 networking
9 networkingMohammad Alyan
1.7K vistas23 diapositivas
أنظمة إدارة المحتوى por
أنظمة إدارة المحتوىأنظمة إدارة المحتوى
أنظمة إدارة المحتوىEhab Saad Ahmad
419 vistas21 diapositivas

Similar a لا تكرر نفسك DRY (Don't Repeat yourself)(20)

أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf por NadiaMohamedSherif
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfأريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
NadiaMohamedSherif14 vistas
الدرس الثاني عشر por Anas Aloklah
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشر
Anas Aloklah253 vistas
أنظمة إدارة المحتوى por Ehab Saad Ahmad
أنظمة إدارة المحتوىأنظمة إدارة المحتوى
أنظمة إدارة المحتوى
Ehab Saad Ahmad419 vistas
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف por Mohamed E. Saleh
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحترافالبرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
Mohamed E. Saleh379 vistas
دوال البرمجة Functions and methods in programming por Islam Gharib
دوال البرمجة Functions and methods in programmingدوال البرمجة Functions and methods in programming
دوال البرمجة Functions and methods in programming
Islam Gharib319 vistas
functional requirements and non functional requirements por AliMohammad155
functional requirements and non functional requirementsfunctional requirements and non functional requirements
functional requirements and non functional requirements
AliMohammad155581 vistas
Bi marabia3 por Omar Selim
Bi marabia3Bi marabia3
Bi marabia3
Omar Selim263 vistas
Bim arabia 3 por Omar Selim
Bim arabia 3Bim arabia 3
Bim arabia 3
Omar Selim3.1K vistas

Más de anees abu-hmaid

شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design) por
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)anees abu-hmaid
349 vistas178 diapositivas
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات por
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتلا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتanees abu-hmaid
128 vistas8 diapositivas
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت por
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتنقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتanees abu-hmaid
168 vistas8 diapositivas
Web performance - الجزء السادس por
Web performance - الجزء السادسWeb performance - الجزء السادس
Web performance - الجزء السادسanees abu-hmaid
112 vistas5 diapositivas
Web performance - الجزء الثالث por
Web performance - الجزء الثالثWeb performance - الجزء الثالث
Web performance - الجزء الثالثanees abu-hmaid
161 vistas11 diapositivas
Web performance - الجزء الثاني por
Web performance - الجزء الثانيWeb performance - الجزء الثاني
Web performance - الجزء الثانيanees abu-hmaid
165 vistas6 diapositivas

Más de anees abu-hmaid(12)

شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design) por anees abu-hmaid
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
anees abu-hmaid349 vistas
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات por anees abu-hmaid
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتلا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
anees abu-hmaid128 vistas
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت por anees abu-hmaid
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتنقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
anees abu-hmaid168 vistas
Web performance - الجزء السادس por anees abu-hmaid
Web performance - الجزء السادسWeb performance - الجزء السادس
Web performance - الجزء السادس
anees abu-hmaid112 vistas
Web performance - الجزء الثالث por anees abu-hmaid
Web performance - الجزء الثالثWeb performance - الجزء الثالث
Web performance - الجزء الثالث
anees abu-hmaid161 vistas
Web performance - الجزء الثاني por anees abu-hmaid
Web performance - الجزء الثانيWeb performance - الجزء الثاني
Web performance - الجزء الثاني
anees abu-hmaid165 vistas
Web performance - الجزء الأول por anees abu-hmaid
Web performance - الجزء الأولWeb performance - الجزء الأول
Web performance - الجزء الأول
anees abu-hmaid242 vistas
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول por anees abu-hmaid
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولقبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
anees abu-hmaid144 vistas
كيف تقرأ كتابا - خطوات لتحسين القراءة por anees abu-hmaid
كيف تقرأ كتابا - خطوات لتحسين القراءةكيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءة
anees abu-hmaid204 vistas
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز por anees abu-hmaid
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازوهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
anees abu-hmaid77 vistas
Coding review guide مراجعة الشيفرة البرمجية por anees abu-hmaid
Coding review guide مراجعة الشيفرة البرمجيةCoding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجية
anees abu-hmaid921 vistas
Node.js course باللغة العربية por anees abu-hmaid
Node.js course باللغة العربيةNode.js course باللغة العربية
Node.js course باللغة العربية
anees abu-hmaid4.7K vistas

لا تكرر نفسك DRY (Don't Repeat yourself)

  • 1. بسم الله الرحمن الرحيم الحمد لله رب العالمين, الحمد لله رب السماوات ورب العرش العظيم, الحمد لله حمدا كما ينبغي لجلال وجهه, وعظيم سلطانه, الحمد لله رب العالمين. DRY (Don't Repeat Yourself) إن من أهم المبادئ لدى المبرمجين, عدم تكرار نفس النص البرمجي أكثر من مرة داخل المشروع, وهذا الأمر يعد من مبادئ هندسة البرمجيات, ويعد هذا المبدئ من أهم المبادئ التي قدمت لتطوير البرمجيات المختلفة بأنواعها, وتم تصميم هذا وكانت انطلاقة هذا المبدئ .. Dave Thomas و Andy Hunt المبدئ من قبل من فكرة أن كل معرفة يجب أن تكون واحدة. لا اختلاف بها داخل النظام الواحد, يعني أن أي نظام يجب أن تقوم ببنائه ..له قواعد يسير عليه ..هذه القواعد ثابته للمشروع, وعليه يكون وجودها في مكان واحد هو الأساس, واستخدامها في أكثر من مكان هو الوسيلة .. ويكون الإستخدام عن طريق الإستدعاء وليس التكرار, ومن هنا تكمن الأهمية..فمثلا ..لو احتجنا أن نقوم بتغيير هذه القاعدة, لجميع أجزاء النظام, فإن كل ما يلزمنا هو أن نقوم بتغيير أسطر هذه القاعدة فقط, وفي مكان واحد, بينما في الأسلوب الآخر يلزمنا تغيير القاعدة في جميع الأماكن داخل المشروع, والآن .. بعد هذه اللمحة السريعة عن الموضوع ماذا تتوقع أن يكون نتاج استخدام هذا الأسلوب ؟ clean ( ستكون النتائج بكل بساطة شيفرة برمجية واضحة - مرتبة - نظيفة وهذه الشيفرة توضح دائما مدى احترافية المبرمج الذي يعمل على هذا ,)code المشروع, وهي مقياس يقاس به المبرمجون لتقييم المستوى البرمجي للمبرمج .. أيضا فإن هذا الإسلوب يقلل من التكرار الغير مرغوب فيه, وهذا يعني سرعة وأداء أفضل للمشروع, كما أنك بذلك تجعل من عملية معالجة - تطوير - تعديل - حذف - اضافة أي عنصر الى المشروع عملية سهلة, ويمكن القيام بها من قبلك شخصيا أو
  • 2. من قبل أي مبرمج آخر سيقوم بقرائة الشيفرة البرمجية الخاصة بك.. فأنت عندما تعمل ... إعمل بإسلوب تجعل من شيفرتك البرمجية مقروئة وواضحة لأي شخص قد يقف بجانبك ويطلع على ما تكتب, وكم مقدار الوضوح في استخدام الموارد في المشروع, كم هو دليل على احترافية المبرمج)طبعا مع اخذ الإعتبار الأداء والوقت والتنظيم ...الخ( والآن ..لماذا تم الإستغناء عن العمل بالأسلوب القديم والتوجه الى العمل على مبدأ ؟ DRY وذلك لأسباب كثيرة قد يكون أهمها: 1( كل سطر في المشروع يحتاج الى تعديل أو صيانة يلزمني من المرور على المشروع كاملا. أيضا يجب أن يكون على مستوى Bug وحل ال ,Bug 2( يخرج كم كبير من ال المشروع. 3( غير واضح وصعب التتبع للمبرمجين الآخرين. 4( كل مبرمج يتبع أسلوب برمجي معين, سيقوم بتوجيه اتقناص أو تحميل المبرمج السابق مسؤولية الأخطاء الناتجة, بالإضافة الى التقليل من مهارته. 5( لم يعد أحد يعمل بهذه الأنظمة سوى المبرمجين الذي يتعلمون في أول الطريق, لأنها مرحلة أولى قبل الانطلاق الى المرحلة الأخرى ..فهي حجر الأساس .. ؟.DRY اذن .. كيف يتم العمل على مفهوم ال يكون العمل بتنظيم الشيفرة البرمجية بآليات وطرق مختلفة تستخدم لتنسيق الشيفرة البرمجية داخل المشروع دون تكرار, وباستغلال كامل للوظائف....ويمكن تلخيص
  • 3. MVC system وقد يكون من أشهرها ال ,design patterns ذلك بفكرة ال الخ ... zend وال Yii المستخدمة في العديد من بيئات العمل مثل ال View و Model يكون بتنظيم المشروع من خلال عمل MVC فمبدأ عمل هذا ال شاهد هذه الصورة لفهم اجرائات العمل .. Control و لمعرفة المزيد من التفاصيل, وسيتم بإذن MVC system )بإمكانك البحث عن ال الله تعالى شرح هذه الموضوع في مقال آخر بإذن الله تعالى, ونكتفي هنا بالسرد فقط( هو من أهم الأمور التي أدت الى الإنطلاق في هذا العالم OOP وطبعا ظهور ال وهذا المبدئ ... ؟.DRY والآن هل دائما يجب أن تكون الشيفرة البرمجية
  • 4. مثل DRY الجواب طبعا لا .. فهناك حالات يجب أن لا يكون فيها الشيفرة البرمجية يستخدم هذا الأسلوب لتحسين سرعة data denormalization in a database أو أداء البيانات في قاعدة البيانات, فيكون هنا الية الإستدعاء استدعاء مباشرللبيانات المطلوية ... )لكنها حالات خاصة وليست عامة ولها أسلوب ومبدئ خاص بها أيضا(.. والآن ..أرجوك, عندما ترغب في تطوير أي مشروع خذ بعين الإعتبار من سيأتي بعدك, أو خذ بعين الإعتبار نفسك اذا طلب منك أي تعديل .. استخدم مفاهيم ال فهذا ليس عيبا !! .. function على أقل تقدير للقيام بالوظائف .. إستخدم ال OOP أرجوك ..لا تقم بكتابة شيفرتك البرمجية على شكل أسطر متتابعة فقط ..لتنفيذ المهمة ونقطة. خلاصة الموضوع: يعني استخدامك لاستراتيجية أساسية للحد من التعقيد في DRY 1( استخدامك لل وحدات النظام, وذلك عن طريق تقسم المشروع الى أجزاء صغيرة. 2( القطع الصغيرة التي تم انشائها في النقطة الأولى يجب أن تضبط مرة واحدة في كل النظام. 3( يجب أن قطعة صغيرة وتم ضبها داخل النظام موثقة ولا يوجد لبس بها. اللهم اغفر لي ولوالدي وللمسلمين أحيائهم وأمواتهم إنك سميع عليم رحيم, وآخر دعوانا أن الحمد لله رب العالمين. أخوكم أنيس حكمت أبو حميد.