الفرق بين المراجعتين لصفحة: «Refactoring/push down field»

من موسوعة حسوب
أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: دفع الحقل لأسفل (Push Down Field)}}</noinclude> == المشكلة == هل يستخدم الحقل في بعض الأصناف ا...'
 
ط مراجعة وتدقيق.
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 5: سطر 5:
== الحل ==
== الحل ==
نقل الحقل إلى هذه الأصناف الفرعية.
نقل الحقل إلى هذه الأصناف الفرعية.
=== مثال ===
==== قبل إعادة التصميم ====
يُستخدَم الحقل <code>fuel</code> الموجود في الصنف <code>Unit</code> الأب في صنف فرعي واحد فقط الذي هو <code>Tank</code>:[[ملف:Push Down Field - Before.png|بديل=يستخدم الحقل في بعض الأصناف الفرعية فقط.|بدون|تصغير|يستخدم الحقل في بعض الأصناف الفرعية فقط.]]
==== بعد إعادة التصميم ====
نقل الحقل من الصنف الأب إلى الصنف الفرعي المستخدم فيه:[[ملف:Push Down Field - After.png|بديل=نقل الحقل إلى هذه الأصناف الفرعية.|بدون|تصغير|نقل الحقل إلى هذه الأصناف الفرعية.]]


== لم إعادة التصميم؟ ==
== لم إعادة التصميم؟ ==
على الرغم من أنه كان من المقرر استخدام حقل بشكل عام لجميع الأصناف، في الواقع لا يستخدم الحقل إلا في بعض الأصناف الفرعية. على سبيل المثال، يمكن أن تحدث هذه الحالة عندما لا تتحقق الميزات المخطط لها.
على الرغم من أنه كان من المقرر استخدام حقل بشكل عام لجميع الأصناف، في الواقع لم يستخدم الحقل إلا في بعض الأصناف الفرعية. على سبيل المثال، يمكن أن تحدث هذه الحالة عندما لا تتحقق الميزات المخطط لها.


ويمكن أن يحدث هذا أيضا بسبب استخراج (أو إزالة) جزء من وظيفة التسلسل الهرمي للصنف.
ويمكن أن يحدث هذا أيضا بسبب استخراج (أو إزالة) جزء من وظيفة التسلسل الهرمي للصنف.
سطر 17: سطر 25:
== آلية الحل ==
== آلية الحل ==
# عرِّف حقل في كل الأصناف الفرعية اللازمة.
# عرِّف حقل في كل الأصناف الفرعية اللازمة.
# أزِل الحقل من الصنف الفائق.
# أزِل الحقل من الصنف الأب.


== انظر أيضًا ==
== انظر أيضًا ==
سحب الحقل لأعلى (Pull Up Field)
* [[Refactoring/pull up field|سحب الحقل لأعلى (Pull Up Field)]].
دفع التابع لأسفل (Push Down Method)
* [[Refactoring/push down method|دفع التابع لأسفل (Push Down Method)]].
استخراج الأصناف الفرعية (Extract Subclass).
* [[Refactoring/extract subclass|استخراج الأصناف الفرعية (Extract Subclass).]]
[[Refactoring/refused bequest|الوراثة الفائضة (Refused Bequest)]].
* [[Refactoring/refused bequest|الوراثة الفائضة (Refused Bequest)]].


== مصادر ==
== مصادر ==
* صفحة توثيق تقديم التوكيد في موقع refactoring.guru.
* [https://refactoring.guru/push-down-field صفحة توثيق دفع الحقل لأسفل في موقع refactoring.guru].
 
=== مثال ===
 
==== قبل إعادة التصميم ====
 
==== بعد إعادة التصميم ====
[[تصنيف:Refactoring]]
[[تصنيف:Refactoring]]
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Dealing with Generalization]]
[[تصنيف:Refactoring Dealing with Generalization]]

المراجعة الحالية بتاريخ 09:56، 26 فبراير 2019

المشكلة

هل يستخدم الحقل في بعض الأصناف الفرعية فقط؟

الحل

نقل الحقل إلى هذه الأصناف الفرعية.

مثال

قبل إعادة التصميم

يُستخدَم الحقل fuel الموجود في الصنف Unit الأب في صنف فرعي واحد فقط الذي هو Tank:

يستخدم الحقل في بعض الأصناف الفرعية فقط.
يستخدم الحقل في بعض الأصناف الفرعية فقط.

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

نقل الحقل من الصنف الأب إلى الصنف الفرعي المستخدم فيه:

نقل الحقل إلى هذه الأصناف الفرعية.
نقل الحقل إلى هذه الأصناف الفرعية.

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

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

ويمكن أن يحدث هذا أيضا بسبب استخراج (أو إزالة) جزء من وظيفة التسلسل الهرمي للصنف.

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

  • يُحسِّن من التماسك الداخلي للصنف. يتواجد الحقل حيث يُستخدم في الواقع.
  • عند الانتقال إلى عدة أصناف فرعية في وقت واحد، يمكنك تطوير الحقول بشكل مستقل عن بعضها البعض. يُنشئ هذا تكرارًا للشيفرة، لذا ادفع الحقول لأسفل فقط عندما تكون عازمًا حقًا على استعمال الحقول بطرق مختلفة.

آلية الحل

  1. عرِّف حقل في كل الأصناف الفرعية اللازمة.
  2. أزِل الحقل من الصنف الأب.

انظر أيضًا

مصادر