الفرق بين المراجعتين ل"Refactoring/remove control flag"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: إزالة رايات التحكم (Remove Control Flag)}}</noinclude> == المشكلة == لديك متغيرات منطقية تعمل كر...')
 
ط (مراجعة وتدقيق)
 
سطر 4: سطر 4:
  
 
== الحل ==
 
== الحل ==
استخدم  break و continue و return بدلًا من هذه المتغيرات.
+
استخدم الكلمات المفتاحية <code>break</code> و <code>continue</code> و <code>return</code> بدلًا من هذه المتغيرات.
  
 
== لم إعادة التصميم؟ ==
 
== لم إعادة التصميم؟ ==
 
تعود رايات التحكم إلى الأيام الخوالي، عندما كان يُتاح دائمًا للمبرمج "الأصيل" نقطة إدخال واحدة للدوال (سطر تعريف الدالة) ونقطة خروج واحدة (في نهاية الدالة).
 
تعود رايات التحكم إلى الأيام الخوالي، عندما كان يُتاح دائمًا للمبرمج "الأصيل" نقطة إدخال واحدة للدوال (سطر تعريف الدالة) ونقطة خروج واحدة (في نهاية الدالة).
  
لكن هذا النمط المتشدد عفا عليه الزمن في لغات البرمجة الحديثة، إذ أصبح لدينا عوامل خاصة لتعديل تدفق التحكم في الحلقات وغيرها من التركيبات المُعقدة:
+
لكن هذا النمط المتشدد عفا عليه الزمن في لغات البرمجة الحديثة، إذ أصبح لدينا عوامل خاصة لتعديل تدفق التحكم في الحلقات وغيرها من التركيبات المُعقدة مثل:
* break: إيقاف الحلقة.
+
* <code>break</code>: إيقاف الحلقة.
* continue: إيقاف تنفيذ فرع الحلقة الحالي والاستمرار في التحقق من شروط الحلقة في الدورة التالية.
+
* <code>continue</code>: إيقاف تنفيذ فرع الحلقة الحالي والاستمرار في التحقق من شروط الحلقة في الدورة التالية.
* return: إيقاف تنفيذ الدالة بأكملها وإعادة نتيجتها في العامل إذا ما أُعطيت.
+
* <code>return</code>: إيقاف تنفيذ الدالة بأكملها وإعادة نتيجتها (إذا ما أُعطيت).
  
 
== فوائد تطبيق الحل ==
 
== فوائد تطبيق الحل ==
سطر 19: سطر 19:
 
== آلية الحل ==
 
== آلية الحل ==
 
# ابحث عن تعيين قيمة راية التحكم التي تؤدي إلى الخروج من الحلقة أو من الدورة الحالية.
 
# ابحث عن تعيين قيمة راية التحكم التي تؤدي إلى الخروج من الحلقة أو من الدورة الحالية.
# استبدل ذلك مع break، إذا كان هذا الخروج من الحلقة؛ ومع continue، إذا كان هذا الخروج من الدورة، أو return، إذا كنت بحاجة إلى إعادة هذه القيمة من الدالة.
+
# استبدل ذلك مع <code>break</code>، إذا كان هذا الخروج من الحلقة؛ أو مع <code>continue</code>، إذا كان هذا الخروج من الدورة الحالية؛ أو <code>return</code>، إذا كنت بحاجة إلى الخروج من الدالة وإعادة قيمة محدَّدة.
 
# أزل الشيفرة البرمجية المتبقية والتحققات المقترنة براية التحكم.
 
# أزل الشيفرة البرمجية المتبقية والتحققات المقترنة براية التحكم.
  

المراجعة الحالية بتاريخ 08:27، 19 ديسمبر 2018

المشكلة

لديك متغيرات منطقية تعمل كرايات تحكم لتعبيرات منطقية متعددة.

الحل

استخدم الكلمات المفتاحية break و continue و return بدلًا من هذه المتغيرات.

لم إعادة التصميم؟

تعود رايات التحكم إلى الأيام الخوالي، عندما كان يُتاح دائمًا للمبرمج "الأصيل" نقطة إدخال واحدة للدوال (سطر تعريف الدالة) ونقطة خروج واحدة (في نهاية الدالة).

لكن هذا النمط المتشدد عفا عليه الزمن في لغات البرمجة الحديثة، إذ أصبح لدينا عوامل خاصة لتعديل تدفق التحكم في الحلقات وغيرها من التركيبات المُعقدة مثل:

  • break: إيقاف الحلقة.
  • continue: إيقاف تنفيذ فرع الحلقة الحالي والاستمرار في التحقق من شروط الحلقة في الدورة التالية.
  • return: إيقاف تنفيذ الدالة بأكملها وإعادة نتيجتها (إذا ما أُعطيت).

فوائد تطبيق الحل

  • غالبا ما تكون شيفرة راية التحكم أكثر ثقلًا من الشيفرة البرمجية المكتوبة مع عوامل تدفق التحكم.

آلية الحل

  1. ابحث عن تعيين قيمة راية التحكم التي تؤدي إلى الخروج من الحلقة أو من الدورة الحالية.
  2. استبدل ذلك مع break، إذا كان هذا الخروج من الحلقة؛ أو مع continue، إذا كان هذا الخروج من الدورة الحالية؛ أو return، إذا كنت بحاجة إلى الخروج من الدالة وإعادة قيمة محدَّدة.
  3. أزل الشيفرة البرمجية المتبقية والتحققات المقترنة براية التحكم.

مصادر