إزالة راية التحكم (Remove Control Flag).
لديك متغير منطقي (Boolean) يعمل كراية تحكم لتعبيرات منطقية متعددة.
بدلاً من هذا المتغير، استخدم break و continue و return.
##مثال
void checkSecurity(String[] people) {
boolean found = false;
for (int i = 0; i < people.length; i++) {
if (!found) {
if (people[i].equals("Don")) {
sendAlert();
found = true;
}
if (people[i].equals("John")) {
sendAlert();
found = true;
}
}
}
}void checkSecurity(String[] people) {
for (String person : people) {
if (person.equals("Don") || person.equals("John")) {
sendAlert();
return;
}
}
}##لماذا نعيد الهيكلة
يعود تاريخ رايات التحكم إلى الأيام الغابرة، عندما كان المبرمجون "التقليديون" يصرون دائماً على وجود نقطة دخول واحدة لدوالهم (سطر التصريح عن الدالة) ونقطة خروج واحدة (في نهاية الدالة تماماً).
في لغات البرمجة الحديثة، أصبح هذا الأسلوب البرمجي قديماً وعفا عليه الزمن، نظراً لامتلاكنا معاملات خاصة لتعديل تدفق التحكم في الحلقات والتراكيب المعقدة الأخرى:
-
break: يوقف الحلقة التكرارية. -
continue: يوقف تنفيذ فرع الحلقة الحالي وينتقل للتحقق من شروط الحلقة في التكرار التالي. -
return: يوقف تنفيذ التابع بالكامل ويعيد نتيجته إذا كانت محددة في المعامل.
##الفوائد
- غالباً ما يكون كود راية التحكم أكثر ثقلاً وتعقيداً من الكود المكتوب باستخدام معاملات التحكم في التدفق (Control flow operators).
##كيفية إعادة الهيكلة
-
ابحث عن تعيين القيمة لراية التحكم التي تتسبب في الخروج من الحلقة (Loop) أو التكرار الحالي.
-
استبدلها بـ
break، إذا كان هذا خروجاً من حلقة تكرارية؛ أوcontinue، إذا كان خروجاً من تكرار (Iteration)؛ أوreturn، إذا كنت بحاجة إلى إرجاع هذه القيمة من التابع. -
أزل الكود المتبقي والفحوصات المرتبطة براية التحكم.