SlideShare une entreprise Scribd logo
1  sur  4
بسم الله الرحمن الرحيم 
الحمد لله رب العالمين, الحمد لله رب السماوات ورب العرش العظيم, الحمد لله حمدا 
كما ينبغي لجلال وجهه, وعظيم سلطانه, الحمد لله رب العالمين. 
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( يجب أن قطعة صغيرة وتم ضبها داخل النظام موثقة ولا يوجد لبس بها. 
اللهم اغفر لي ولوالدي وللمسلمين أحيائهم وأمواتهم إنك سميع عليم رحيم, وآخر 
دعوانا أن الحمد لله رب العالمين. 
أخوكم أنيس حكمت أبو حميد.

Contenu connexe

Tendances

باللغة العربية HTML5 دورة
باللغة العربية HTML5 دورة باللغة العربية HTML5 دورة
باللغة العربية HTML5 دورة anees abu-hmaid
 
باللغة العربية SASS دورة
  باللغة العربية SASS دورة   باللغة العربية SASS دورة
باللغة العربية SASS دورة anees abu-hmaid
 
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم NoureddineHassi
 
تعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptMolham Al-Maleh
 
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاالجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاanees abu-hmaid
 
الدرس السادس عشر
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشرAnas Aloklah
 
كتاب تعلم Html5 css3
كتاب تعلم Html5 css3كتاب تعلم Html5 css3
كتاب تعلم Html5 css3titifcom
 
Text Formatting+(HTML5)
Text Formatting+(HTML5)Text Formatting+(HTML5)
Text Formatting+(HTML5)Ahmed Hassan
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشرAnas Aloklah
 
بعض اساسيات البرمجة
بعض اساسيات البرمجةبعض اساسيات البرمجة
بعض اساسيات البرمجةmadani zamzami
 

Tendances (10)

باللغة العربية HTML5 دورة
باللغة العربية HTML5 دورة باللغة العربية HTML5 دورة
باللغة العربية HTML5 دورة
 
باللغة العربية SASS دورة
  باللغة العربية SASS دورة   باللغة العربية SASS دورة
باللغة العربية SASS دورة
 
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
بالعربيةAngular js(ar)تحميل كتاب دورة لتعلم
 
تعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScriptتعلم HTML CSS و JavaScript
تعلم HTML CSS و JavaScript
 
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبهاالجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
الجزء الثاني قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها
 
الدرس السادس عشر
الدرس السادس عشرالدرس السادس عشر
الدرس السادس عشر
 
كتاب تعلم Html5 css3
كتاب تعلم Html5 css3كتاب تعلم Html5 css3
كتاب تعلم Html5 css3
 
Text Formatting+(HTML5)
Text Formatting+(HTML5)Text Formatting+(HTML5)
Text Formatting+(HTML5)
 
الدرس الرابع عشر
الدرس الرابع عشرالدرس الرابع عشر
الدرس الرابع عشر
 
بعض اساسيات البرمجة
بعض اساسيات البرمجةبعض اساسيات البرمجة
بعض اساسيات البرمجة
 

En vedette

تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةتعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةanees abu-hmaid
 
الخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابالخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابanees abu-hmaid
 
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثاللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثanees abu-hmaid
 
Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)anees abu-hmaid
 
الإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITالإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITanees abu-hmaid
 
دورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربيةدورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربيةanees abu-hmaid
 
دورة CSS3 باللغة العربية
دورة CSS3 باللغة العربيةدورة CSS3 باللغة العربية
دورة CSS3 باللغة العربيةanees abu-hmaid
 
باللغة العربية JSON دورة
  باللغة العربية JSON دورة   باللغة العربية JSON دورة
باللغة العربية JSON دورة anees abu-hmaid
 
تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)anees abu-hmaid
 
Canvas دورة باللغة العربية
Canvas دورة باللغة العربيةCanvas دورة باللغة العربية
Canvas دورة باللغة العربيةanees abu-hmaid
 
HTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic BookHTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic BookiTawy Community
 
Cisco stack wise technology
Cisco stack wise technologyCisco stack wise technology
Cisco stack wise technologyiTawy Community
 
(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر
(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر
(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوترInformation Technology Specialists
 

En vedette (17)

تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانيةتعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
تعلم البرمجة في 3 ساعات و 20 دقيقة و 55 ثانية
 
الخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعرابالخصوصية وموقعها من الإعراب
الخصوصية وموقعها من الإعراب
 
jQuery UI (Effect)
jQuery UI (Effect) jQuery UI (Effect)
jQuery UI (Effect)
 
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحثاللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
اللغة الإنجليزية والمشاكل البرمجية ومهارة البحث
 
Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)Ecmascript 6 (ES6) جافا سكربت (6)
Ecmascript 6 (ES6) جافا سكربت (6)
 
الإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & ITالإسلام والتقنية Islam & IT
الإسلام والتقنية Islam & IT
 
دورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربيةدورة دروبال 7 باللغة العربية
دورة دروبال 7 باللغة العربية
 
دورة CSS3 باللغة العربية
دورة CSS3 باللغة العربيةدورة CSS3 باللغة العربية
دورة CSS3 باللغة العربية
 
باللغة العربية JSON دورة
  باللغة العربية JSON دورة   باللغة العربية JSON دورة
باللغة العربية JSON دورة
 
تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)تنسيق الشيفرة البرمجية (Coding Style)
تنسيق الشيفرة البرمجية (Coding Style)
 
Canvas دورة باللغة العربية
Canvas دورة باللغة العربيةCanvas دورة باللغة العربية
Canvas دورة باللغة العربية
 
Js dom & JS bom
Js dom & JS bomJs dom & JS bom
Js dom & JS bom
 
HTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic BookHTML 5 - CSS 3 Arabic Book
HTML 5 - CSS 3 Arabic Book
 
Cisco stack wise technology
Cisco stack wise technologyCisco stack wise technology
Cisco stack wise technology
 
(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر
(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر
(المهمة الأولى (المكونات الداخلية لجهاز الكمبيوتر
 
ITIL Foundation
ITIL FoundationITIL Foundation
ITIL Foundation
 
مهمه 4 "علياء عادل الدور"
مهمه 4 "علياء عادل الدور"مهمه 4 "علياء عادل الدور"
مهمه 4 "علياء عادل الدور"
 

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

أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfأريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfNadiaMohamedSherif
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented ProgrammingOmar Albelbaisy
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشرAnas Aloklah
 
أنظمة إدارة المحتوى
أنظمة إدارة المحتوىأنظمة إدارة المحتوى
أنظمة إدارة المحتوىEhab Saad Ahmad
 
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحترافالبرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحترافMohamed E. Saleh
 
دوال البرمجة Functions and methods in programming
دوال البرمجة Functions and methods in programmingدوال البرمجة Functions and methods in programming
دوال البرمجة Functions and methods in programmingIslam Gharib
 
functional requirements and non functional requirements
functional requirements and non functional requirementsfunctional requirements and non functional requirements
functional requirements and non functional requirementsAliMohammad155
 
BIMarabia3.pdf
BIMarabia3.pdfBIMarabia3.pdf
BIMarabia3.pdfOmar Selim
 
ملف بوروبينت اساسيات برمجة الحاسب والخوارزميات
ملف بوروبينت اساسيات برمجة الحاسب والخوارزمياتملف بوروبينت اساسيات برمجة الحاسب والخوارزميات
ملف بوروبينت اساسيات برمجة الحاسب والخوارزمياتomo6767g
 

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

Dynamo
DynamoDynamo
Dynamo
 
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdfأريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
أريد تعلم البرمجة لكنني لا أعرف من أين أبدأ.pdf
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
الدرس الثاني عشر
الدرس الثاني عشرالدرس الثاني عشر
الدرس الثاني عشر
 
9 networking
9 networking9 networking
9 networking
 
أنظمة إدارة المحتوى
أنظمة إدارة المحتوىأنظمة إدارة المحتوى
أنظمة إدارة المحتوى
 
الدرس 2.pdf
الدرس 2.pdfالدرس 2.pdf
الدرس 2.pdf
 
البرمجة
البرمجةالبرمجة
البرمجة
 
الدرس 1.pdf
الدرس 1.pdfالدرس 1.pdf
الدرس 1.pdf
 
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحترافالبرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
البرمجة | أقوي مجالات العمل والربح من الانترنت..دليلك نحو الاحتراف
 
المحاضرة الثامنة وورد2013.
المحاضرة الثامنة  وورد2013.المحاضرة الثامنة  وورد2013.
المحاضرة الثامنة وورد2013.
 
دوال البرمجة Functions and methods in programming
دوال البرمجة Functions and methods in programmingدوال البرمجة Functions and methods in programming
دوال البرمجة Functions and methods in programming
 
Android 1
Android 1Android 1
Android 1
 
functional requirements and non functional requirements
functional requirements and non functional requirementsfunctional requirements and non functional requirements
functional requirements and non functional requirements
 
Bi marabia3
Bi marabia3Bi marabia3
Bi marabia3
 
BIMarabia3.pdf
BIMarabia3.pdfBIMarabia3.pdf
BIMarabia3.pdf
 
Bi marabia3
Bi marabia3Bi marabia3
Bi marabia3
 
Bi marabia3
Bi marabia3Bi marabia3
Bi marabia3
 
Bim arabia 3
Bim arabia 3Bim arabia 3
Bim arabia 3
 
ملف بوروبينت اساسيات برمجة الحاسب والخوارزميات
ملف بوروبينت اساسيات برمجة الحاسب والخوارزمياتملف بوروبينت اساسيات برمجة الحاسب والخوارزميات
ملف بوروبينت اساسيات برمجة الحاسب والخوارزميات
 

Plus de anees abu-hmaid

شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)anees abu-hmaid
 
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتلا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتanees abu-hmaid
 
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتنقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتanees abu-hmaid
 
Web performance - الجزء السادس
Web performance - الجزء السادسWeb performance - الجزء السادس
Web performance - الجزء السادسanees abu-hmaid
 
Web performance - الجزء الخامس
Web performance - الجزء الخامسWeb performance - الجزء الخامس
Web performance - الجزء الخامسanees abu-hmaid
 
Web performance - الجزء الرابع
Web performance - الجزء الرابعWeb performance - الجزء الرابع
Web performance - الجزء الرابعanees abu-hmaid
 
Web performance - الجزء الثالث
Web performance - الجزء الثالثWeb performance - الجزء الثالث
Web performance - الجزء الثالثanees abu-hmaid
 
Web performance - الجزء الثاني
Web performance - الجزء الثانيWeb performance - الجزء الثاني
Web performance - الجزء الثانيanees abu-hmaid
 
Web performance - الجزء الأول
Web performance - الجزء الأولWeb performance - الجزء الأول
Web performance - الجزء الأولanees abu-hmaid
 
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولقبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولanees abu-hmaid
 
كيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءةكيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءةanees abu-hmaid
 
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازوهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازanees abu-hmaid
 
Coding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجيةCoding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجيةanees abu-hmaid
 
Node.js course باللغة العربية
Node.js course باللغة العربيةNode.js course باللغة العربية
Node.js course باللغة العربيةanees abu-hmaid
 

Plus de anees abu-hmaid (14)

شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
شرح طريقة تصميم الأنظمة - من مستخدم إلى مليون مستخدم )System Design)
 
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلماتلا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
لا تتداول العملات الرقمية ولا تشتريها قبل أن تقرأ هذه الكلمات
 
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنتنقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
نقاط تقنية مفيدة لمستخدمين شبكة الإنترنت
 
Web performance - الجزء السادس
Web performance - الجزء السادسWeb performance - الجزء السادس
Web performance - الجزء السادس
 
Web performance - الجزء الخامس
Web performance - الجزء الخامسWeb performance - الجزء الخامس
Web performance - الجزء الخامس
 
Web performance - الجزء الرابع
Web performance - الجزء الرابعWeb performance - الجزء الرابع
Web performance - الجزء الرابع
 
Web performance - الجزء الثالث
Web performance - الجزء الثالثWeb performance - الجزء الثالث
Web performance - الجزء الثالث
 
Web performance - الجزء الثاني
Web performance - الجزء الثانيWeb performance - الجزء الثاني
Web performance - الجزء الثاني
 
Web performance - الجزء الأول
Web performance - الجزء الأولWeb performance - الجزء الأول
Web performance - الجزء الأول
 
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأولقبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
قبل أن تكتب الشيفرة البرمجية، فكر كيف تكتبها - الجزء الأول
 
كيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءةكيف تقرأ كتابا - خطوات لتحسين القراءة
كيف تقرأ كتابا - خطوات لتحسين القراءة
 
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزازوهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
وهم الأمان - مخاطر الإنترنت والتعامل مع الابتزاز
 
Coding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجيةCoding review guide مراجعة الشيفرة البرمجية
Coding review guide مراجعة الشيفرة البرمجية
 
Node.js course باللغة العربية
Node.js course باللغة العربيةNode.js course باللغة العربية
Node.js course باللغة العربية
 

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