الفرق بين المراجعتين لصفحة: «Refactoring/techniques/simplifying conditional expressions»
< Refactoring | techniques
جميل-بيلوني (نقاش | مساهمات) إنشاء الصفحة. |
جميل-بيلوني (نقاش | مساهمات) ط ←مصادر |
||
سطر 35: | سطر 35: | ||
== مصادر == | == مصادر == | ||
* [https://refactoring.guru/refactoring/techniques/simplifying-conditional-expressions | * [https://refactoring.guru/refactoring/techniques/simplifying-conditional-expressions صفحة توثيق تبسيط التعابير الشرطية في موقع refactoring.guru.] | ||
[[تصنيف:Refactoring]] | [[تصنيف:Refactoring]] | ||
[[تصنيف:Refactoring Techniques]] | [[تصنيف:Refactoring Techniques]] | ||
[[تصنيف:Refactoring Simplifying Conditional Expressions]] | [[تصنيف:Refactoring Simplifying Conditional Expressions]] |
المراجعة الحالية بتاريخ 17:57، 27 فبراير 2019
تزداد البنية المنطقية للشروط تعقيدًا مع مرور الوقت، لذا هنالك الكثير من التقنيات لمواجهة هذا التعقيد وتبسيطه وهي:
- تجزئة الشَرطيات (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)
- المشكلة: لكي يعمل جزء من الشيفرة البرمجية بشكل صحيح، يجب أن تتحقق بعض الشروط أو تكون القيم صحيحة.
- الحل: استبدل هذه الافتراضات بنقاط تحقق خاصة بالتوكيد.