تبسيط التعابير الشرطية (Simplifying Conditional Expressions)
< Refactoring | techniques
اذهب إلى التنقل
اذهب إلى البحث
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
تزداد البنية المنطقية للشروط تعقيدًا مع مرور الوقت، لذا هنالك الكثير من التقنيات لمواجهة هذا التعقيد وتبسيطه وهي:
- تجزئة الشَرطيات (Decompose Conditional)
- المشكلة: يوجد شَرط مُعقد (
if-then
/else
أوswitch
). - الحل: فصل الأجزاء المعقدة من الشَرط إلى توابع منفصلة: الشرط، و
then
وelse
.
- المشكلة: يوجد شَرط مُعقد (
- توحيد التعبير الشرطي (Consolidate Conditional Expression)
- المشكلة: وجود عدة شروط تؤدي إلى نفس النتيجة أو الإجراء.
- الحل: توحيد جميع هذه الشروط في تعبير وحيد.
- توحيد الأجزاء الشرطية المكررة (Consolidate Duplicate Conditional Fragments)
- المشكلة: شيفرة برمجية متطابقة موجودة في جميع فروع الشَرطيات.
- الحل: نقل الشيفرة البرمجية خارج الشَرطية.
- إزالة رايات التحكم (Remove Control Flag)
- المشكلة: لديك متغيرات منطقية تعمل كرايات تحكم لتعبيرات منطقية متعددة.
- الحل: استخدم الكلمات المفتاحية
break
وcontinue
وreturn
بدلًا من هذه المتغيرات.
- تبديل الشرطيات المتداخلة بعبارات الحماية (Replace Nested Conditional with Guard Clauses
- المشكلة: وجود مجموعة متداخلة من الشروط وصعوبة تحديد التدفق الطبيعي لتنفيذ الشيفرة البرمجية.
- الحل: عزل جميع الاختبارات الخاصة والحالات الطرفية في عبارات منفصلة ووضعها قبل الاختبارات الرئيسية. من الناحية المثالية، يجب أن يكون لديك قائمة "مسطحة" من الشروط، واحدةً تلو الأخرى.
- تبديل الشرطيات بالتعدديّة الشكليّة (Replace Conditional with Polymorphism)
- المشكلة: وجود شروط تنفِّذ إجراءات مختلفة اعتمادًا على نوع الكائن أو خصائصه.
- الحل: إنشاء أصناف فرعية مطابقة لفروع البنية الشرطية. ويُنشأ فيها تابع مشترك وتُنقل إليه الشيفرة البرمجية من الفرع المقابل من الشرطية. ثم تُستبدل البنية الشرطية باستدعاء التابع المناسب.
- تقديم الكائن الفارغ (Introduce Null Object)
- المشكلة: تؤدي إعادة بعض التوابع للقيمة
null
بدلًا من الكائنات الحقيقية إلى امتلاء الشيفرة البرمجية بالعديد من نقاط التحقق من القيمةnull
. - الحل: إعادة كائن فارغ يظهر السلوك الافتراضي بدلًا من
null
.
- المشكلة: تؤدي إعادة بعض التوابع للقيمة
- تقديم التوكيد (Introduce Assertion)
- المشكلة: لكي يعمل جزء من الشيفرة البرمجية بشكل صحيح، يجب أن تتحقق بعض الشروط أو تكون القيم صحيحة.
- الحل: استبدل هذه الافتراضات بنقاط تحقق خاصة بالتوكيد.